CN113378154B - 应用启动方法及装置 - Google Patents
应用启动方法及装置 Download PDFInfo
- Publication number
- CN113378154B CN113378154B CN202010161027.4A CN202010161027A CN113378154B CN 113378154 B CN113378154 B CN 113378154B CN 202010161027 A CN202010161027 A CN 202010161027A CN 113378154 B CN113378154 B CN 113378154B
- Authority
- CN
- China
- Prior art keywords
- sandbox
- sub
- application
- creating
- target application
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
- G06F21/53—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本申请公开了一种应用启动方法及装置,属于计算机技术领域。所述方法包括:调用沙箱创建接口创建沙箱,所述沙箱处于一个命名空间中,且所述沙箱中包括沙箱主进程;通过所述沙箱主进程在所述沙箱中创建应用运行环境;根据所述命名空间的标识,将目标应用作为所述沙箱主进程的子进程,在创建有所述应用运行环境的沙箱中运行所述目标应用。本申请通过沙箱来运行目标应用,可以提高安全性。
Description
技术领域
本申请涉及计算机技术领域,特别涉及一种应用启动方法及装置。
背景技术
随着技术的快速发展,诸如智能电视等电子设备中也安装了越来越多的应用。比如,音频播放应用、通讯应用等等。因此,如何启动这些应用,以提高系统的安全性,成为目前亟待解决的问题之一。
发明内容
本申请提供了一种应用启动方法及装置,可以提高应用运行的安全性。所述技术方案如下:
一方面,提供了一种应用启动方法,所述方法包括:
调用沙箱创建接口创建沙箱,所述沙箱处于一个命名空间中,且所述沙箱中包括沙箱主进程;
通过所述沙箱主进程在所述沙箱中创建应用运行环境;
根据所述命名空间的标识,将目标应用作为所述沙箱主进程的子进程,在创建有所述应用运行环境的沙箱中运行所述目标应用。
另一方面,提供了一种应用运行装置,所述装置包括:
沙箱创建模块,用于调用沙箱创建接口创建沙箱,所述沙箱处于一个命名空间中,且所述沙箱中包括沙箱主进程;
运行环境创建模块,用于通过所述沙箱主进程在所述沙箱中创建应用运行环境;
应用运行模块,用于根据所述命名空间的标识,将目标应用作为所述沙箱主进程的子进程,在创建有所述应用运行环境的沙箱中运行所述目标应用。
另一方面,提供了一种电子设备,所述电子设备包括存储器和处理器,所述存储器用于存放计算机程序,所述处理器用于执行所述存储器上所存放的计算机程序,以实现上述所述的应用启动方法的步骤。
另一方面,提供了一种计算机可读存储介质,所述存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述所述应用启动方法的步骤。
另一方面,提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述所述的应用启动方法的步骤。
本申请提供的技术方案至少可以带来以下有益效果:
在本申请实施例中,由于沙箱处于一个命名空间中,且处于命名空间中的进程只能看到与自己相关的一部分资源,不能看到其他进程相关资源,也即是,处于命名空间的进程可以相对于外界隔离。因此,在沙箱中创建应用运行环境之后,可以在沙箱中运行目标应用。也即是,在命名空间中运行目标应用,这样可以提高应用运行的安全性。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种应用启动方法的流程图;
图2是本申请实施例提供的另一种应用启动方法的流程图;
图3是本申请实施例提供的一种应用启动装置的结构示意图;
图4是本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
本申请实施例提供的应用启动方法可以应用于电子设备中。该电子设备可以是任何一种可与用户通过键盘、触摸板、触摸屏、遥控器、语音交互或手写设备等一种或多种方式进行人机交互的电子产品,例如PC(Personal Computer,个人计算机)、手机、智能手机、PDA(Personal Digital Assistant,个人数字助手)、可穿戴设备、掌上电脑PPC(PocketPC)、平板电脑、智能车机、智能电视、智能音箱等。
本领域技术人员应能理解上述电子设备仅为举例,其他现有的或今后可能出现的电子设备如可适用于本申请,也应包含在本申请保护范围以内,并在此以引用方式包含于此。
接下来对本申请实施例提供的应用启动方法进行详细的解释说明。
图1是本申请实施例提供的一种应用启动方法的流程图,该方法应用于电子设备中,具体可以应用于电子设备中的应用启动装置中。请参考图1,该方法包括如下步骤。
步骤101:调用沙箱创建接口创建沙箱,该沙箱处于一个命名空间中,且该沙箱中包括沙箱主进程。
其中,沙箱创建接口可以为clone接口,clone接口的参数包括第一标志和第二标志,第一标志用于指示沙箱主进程的标识与其父进程的标识相同,第二标志用于指示该命名空间的标识。也即是,第一标志和第二标志可以作为clone接口的参数,进而通过clone接口可以创建沙箱,该沙箱所处的命名空间的标识可以通过第二标志指定。
需要说明的是,第一标志可以为CLONE_PID标志,第二标志可以为CLONE_MNT标志。命名空间也可以称为namespace,namespce是Linux内核用来隔离内核资源的方式。通过namespace可以让一些进程只能看到与自己相关的一部分资源,而另外一些进程也只能看到与它们自己相关的资源。也即是,通过Linux技术实现的namespaces是对全局系统资源的一种封装隔离,使得处于不同namespace的进程拥有独立的全局系统资源,且改变一个namespace中的系统资源只会影响当前namespace里的进程,对其他namespace中的进程没有影响。
另外,沙箱主进程也可以称为沙箱中的1号进程,也即是,沙箱主进程是沙箱中创建的第一个进程,运行在沙箱中的应用是沙箱主进程的一个子进程,且沙箱主进程退出之后,沙箱就相当于销毁了。换句话说,若沙箱主进程退出,那么沙箱内的所有进程都会被内核自动清理,导致沙箱就会被完全销毁。
步骤102:通过沙箱主进程在该沙箱中创建应用运行环境。
为了便于后续在沙箱中运行目标应用,就需要在沙箱中创建应用运行环境。其中,通过沙箱主进程在沙箱中创建应用运行环境的实现过程可以包括:通过沙箱主进程调用设备管理接口获取可用的外设设备。通过沙箱主进程将压缩格式的目标应用的程序包,绑定到获取的外设设备上,并将获取的外设设备挂载到目标应用的执行路径上。之后,通过沙箱主进程创建覆盖读写隔离层,覆盖读写隔离层是指沙箱中的可读写虚拟文件系统。
需要说明的是,设备管理接口可以为ioctl接口,由于ioctl接口是指对外设设备的I/O通道进行管理的接口,也就是对外设设备的一些特性进行控制。因此,通过调用ioctl接口可以获取可用的外设设备。其中,可用的外设设备是指在目标应用运行过程中,可能需要调用的一些外设设备,比如,音频设备等等。
另外,压缩格式可以为squashfs格式。squashfs是一套基于Linux内核使用的压缩只读文件系统,该文件系统能够压缩系统内的文档、索引节点以及目录。索引节点是硬盘中储存文件元信息的区域,文件元信息即文件的创建者、文件的创建时间、文件的大小等,且索引节点也会消耗硬盘空间。
在本申请实施例中,可以事先将目标应用的程序包封装成squashfs格式。当然,也可以通过沙箱主进程调用squashfs封装工具,将目标应用的程序包封装成squashfs格式。
在一些实施例中,通过沙箱主进程将压缩格式的目标应用的程序包,绑定到获取的外设设备上的过程可以为:通过沙箱主进程存储压缩格式的目标应用的程序包与获取的外设设备的标识之间的对应关系。也即是,通过存储压缩格式的目标应用的程序包与外设设备的标识之间的对应关系即可实现两者之间的绑定。
在一些实施例中,通过沙箱主进程创建覆盖读写隔离层的实现过程可以包括:通过沙箱主进程遍历操作系统的根目录。通过沙箱主进程在该命名空间中,为操作系统的根目录中除动态目录之外的根目录叠加覆盖读写隔离层,以使目标应用拥有独立的可读写虚拟文件系统。
由于动态目录的信息是可变的,因此,需要排除动态目录,而在一些静态目录上叠加覆盖读写隔离层,从而为目标应用创建独立的可读写虚拟文件系统。
需要说明的是,覆盖读写隔离层也可以称为overlay读写隔离层。overlay是一种目前广泛应用的层次文件系统,一个overlay文件系统可以包含两个文件系统,分别为upper文件系统和lower文件系统,是一种新型的联合文件系统。通常,overlay文件系统表示一个文件系统覆盖在另一个文件系统上面。它将单个Linux主机上的两个目录分层,并将它们显示为单个目录,这些目录称为层,overlay的下层目录为“lowerdir”,上层目录为“upperdir”,合并目录为“merged”。
在一些实施例中,通过沙箱主进程创建覆盖读写隔离层之后,可以对整个应用启动装置内的进程进行刷新,从而保证沙箱内的信息能够正常显示。比如,可以使命名空间内的进程的标识正常显示。
另外,由于目标应用是作为沙箱主进程中的一个子进程存在的,这样,创建应用运行环境的过程中就需要一定的权限,也即是,该沙箱所处的命名空间具有这个权限,该权限是Linux系统中的最高权限,可以方便地对操作系统的部件进行删除或更改。这样,后续在沙箱中的所有操作都是在具体这个权限的命名空间中进行。
步骤103:根据命名空间的标识,将目标应用作为沙箱主进程的子进程,在创建有应用运行环境的沙箱中运行目标应用。
在一些实施例中,可以创建第一子进程,根据命名空间的标识,通过第一子进程调用操作系统的空间进入接口进入创建有应用运行环境的沙箱中。在第一子进程中创建第二子进程,第一子进程和第二子进程属于同一个父进程。在第二子进程中运行目标应用。
其中,空间进入接口可以为setns接口,setns接口的参数可以为命名空间的标识,这样,通过setns接口可以进入该命名空间中,也即是,进入创建有应用运行环境的沙箱中。
作为一种示例,可以通过第一子进程调用clone接口,进而在第一子进程中创建第二子进程,且该clone接口的参数为CLONE_PARENT标志。由于CLONE_PARENT标志可以保证创建的子进程的父进程是调用者的父进程,且创建的子进程和创建者是兄弟进程,而不是父子进程,因此,通过带有CLONE_PARENT标志的clone接口创建的第二子进程和第一子进程属于同一父进程,也即是,这两个进程是兄弟进程。
在一些实施例中,可以针对不同的用户组设置不同的用户权限,也即是,同一个用户组对应同一个用户权限。这样,可以为沙箱主进程设置用户标识,以及确定该用户标识所属用户组的组标识。也即是,为沙箱主进程设置用户标识,从而确定沙箱主进程对应的用户权限。
可选地,在确定沙箱主进程对应的用户权限,可以向权限文件中写入用于禁止权限修改的指示信息。比如,用于禁止权限修改的指示信息为deny值。这样,后续在修改权限时,可以确定权限文件中的指示信息是否为deny值,如果是,那么可以确定当前禁止进行权限修改,从而提高安全性。
上述步骤101-103是启动目标应用的过程,接下来将结合两种方式对结束目标应用的运行进行介绍。
第一种方式,向目标应用发送退出信号。在目标应用接收到该退出信号之后,可以释放自身所占用的资源,进而退出。
由于第一种方式是通过目标应用自身释放所占用的资源,因此,可以保证资源释放的彻底性。而且,第一种方式中,应用启动装置可以指示目标应用释放哪些资源,也即是,可以对资源的释放进行定制。
第二种方式,向沙箱主进程发送一个结束信号,也即是,可以通过杀死沙箱主进程的方式,来结束目标应用的运行。
基于上述描述,在沙箱主进程退出之后,整个沙箱就相当于被销毁了,而目标应用是作为沙箱主进程的子进程来运行的,因此,在杀死沙箱主进程之后,沙箱中的所有进程都会被强制退出,这样,就会结束目标应用的运行。而且,杀死沙箱主进程时,沙箱主进程会向操作系统的内核发送第一通知信号,第一通知信号用于通知沙箱主进程已退出。这样,操作系统的内核就会来释放沙箱所占用的资源。由于在这种方式中,通过操作系统的内核可以释放资源,从而可以简化资源调度进程的逻辑,以及保证资源释放的彻底性。
在一些实施例中,在沙箱主进程退出时,沙箱主进程还可以其父进程发送第二通知信号,也即是,向其父进程发送第二通知信号,第二通知信号用于指示沙箱主进程已退出。示例的,第二通知信号可以为SIGCHLD信号。
本申请实施例不仅可以通过上述两种方式来结束目标应用的运行,还可以通过其他的方式来结束目标应用的运行。示例的,沙箱主进程因为一些原因自动退出的情况,也会结束目标应用的运行。比如,沙箱主进程因为一些故障自动退出的情况。
在本申请实施例中,由于沙箱处于一个命名空间中,且处于命名空间中的进程只能看到与自己相关的一部分资源,不能看到其他进程相关资源,也即是,处于命名空间的进程可以相对于外界隔离。因此,在沙箱中创建应用运行环境之后,可以在沙箱中运行目标应用。也即是,在命名空间中运行目标应用,这样可以提高应用运行的安全性。另外,目标应用的程序包为squashfs格式的,这就可以大大的节省磁盘空间。
在一些实施例中,应用启动装置可以包括资源调度进程、沙箱客户端进程和沙箱服务端进程。因此,接下来以这几个进程为例,对本申请实施例提供的应用启动方法进行说明。
请参考图2,图2是本申请实施例提供的一种应用启动方法的流程图。该方法包括如下步骤。
步骤201:资源调度进程调用沙箱客户端进程的沙箱创建接口,向沙箱服务端进程发送沙箱创建请求,该沙箱创建请求携带沙箱配置信息。
在一些实施例中,当需要启动目标应用时,资源调度进程可以调用沙箱客户端进程的沙箱创建接口,向沙箱服务端进程发送沙箱创建请求。其中,沙箱客户端进程的沙箱创建接口可以为clone接口。
通常情况下,资源调度进程和沙箱客户端进程为同一进程,为了便于理解,本申请实施例对两者进行了逻辑层面的划分。
步骤202:沙箱服务端进程接收该沙箱创建请求,并根据该沙箱创建请求携带的沙箱配置信息创建一个沙箱,该沙箱处于一个命名空间中,且该沙箱中包括沙箱主进程,该沙箱主进程为沙箱服务端进程的子进程。
基于上述描述,沙箱创建接口可以为clone接口,clone接口的参数可以包括第一标志和第二标志,第一标志用于指示沙箱主进程的标识与其父进程的标识相同,也即是,沙箱主进程的标识与沙箱服务端进程的标识相同,第二标志用于指示该命名空间的标识。也即是,第一标志和第二标志可以作为clone接口的参数,进而通过clone接口可以向沙箱服务端进程发送沙箱创建请求,且该沙箱所处的命名空间的标识可以通过第二标志指定。
需要说明的是,第一标志可以为CLONE_PID标志,第二标志可以为CLONE_MNT标志。命名空间也可以称为namespace,namespce是Linux内核用来隔离内核资源的方式。通过namespace可以让一些进程只能看到与自己相关的一部分资源,而另外一些进程也只能看到与它们自己相关的资源。也即是,通过Linux技术实现的namespaces是对全局系统资源的一种封装隔离,使得处于不同namespace的进程拥有独立的全局系统资源,且改变一个namespace中的系统资源只会影响当前namespace里的进程,对其他namespace中的进程没有影响。
另外,沙箱主进程也可以称为沙箱中的1号进程,也即是,沙箱主进程是沙箱中创建的第一个进程,运行在沙箱中的应用是沙箱主进程的一个子进程,且沙箱主进程退出之后,沙箱就相当于销毁了。换句话说,若沙箱主进程退出,那么沙箱内的所有进程都会被内核自动清理,导致沙箱就会被完全销毁。
在沙箱服务端进程创建沙箱之后,后续与资源调度进程的交互将由沙箱主进程直接执行,沙箱服务端进程不再参与。因此,接下来的步骤的执行主体都是沙箱主进程。
步骤203:沙箱主进程在沙箱中创建应用运行环境,并将创建有应用运行环境的沙箱所处的命名空间的标识发送给沙箱客户端进程。
在一些实施例中,沙箱主进程可以调用设备管理接口获取可用的外设设备。沙箱主进程将压缩格式的目标应用的程序包,绑定到获取的外设设备上,并将获取的外设设备挂载到目标应用的执行路径上。之后,沙箱主进程创建覆盖读写隔离层,覆盖读写隔离层是指沙箱中的可读写虚拟文件系统。这样即可实现应用运行环境的创建。另外,在沙箱主进程在沙箱中创建应用运行环境之后,可以将创建有应用运行环境的沙箱所处的命名空间的标识发送给沙箱客户端进程。
需要说明的是,设备管理接口可以为ioctl接口,由于ioctl接口是指对外设设备的I/O通道进行管理的接口,也就是对外设设备的一些特性进行控制。因此,通过调用ioctl接口可以获取可用的外设设备。其中,可用的外设设备是指在目标应用运行过程中,可能需要调用的一些外设设备,比如,音频设备等等。
另外,压缩格式可以为squashfs格式。squashfs是一套基于Linux内核使用的压缩只读文件系统,该文件系统能够压缩系统内的文档、索引节点以及目录。索引节点是硬盘中储存文件元信息的区域,文件元信息即文件的创建者、文件的创建时间、文件的大小等,且索引节点也会消耗硬盘空间。
在本申请实施例中,可以事先将目标应用的程序包封装成squashfs格式。当然,也可以通过沙箱主进程调用squashfs封装工具,将目标应用的程序包封装成squashfs格式。
在一些实施例中,沙箱主进程将压缩格式的目标应用的程序包,绑定到获取的外设设备上的过程可以为:沙箱主进程存储压缩格式的目标应用的程序包与获取的外设设备的标识之间的对应关系。也即是,通过存储压缩格式的目标应用的程序包与外设设备的标识之间的对应关系即可实现两者之间的绑定。
在一些实施例中,沙箱主进程创建覆盖读写隔离层的实现过程可以包括:沙箱主进程遍历操作系统的根目录。沙箱主进程在该命名空间中,为操作系统的根目录中除动态目录之外的根目录叠加覆盖读写隔离层,以使目标应用拥有独立的可读写虚拟文件系统。
由于动态目录的信息是可变的,因此,需要排除动态目录,而在一些静态目录上叠加覆盖读写隔离层,从而为目标应用创建独立的可读写虚拟文件系统。
需要说明的是,覆盖读写隔离层也可以称为overlay读写隔离层。overlay是一种目前广泛应用的层次文件系统,一个overlay文件系统可以包含两个文件系统,分别为upper文件系统和lower文件系统,是一种新型的联合文件系统。通常,overlay文件系统表示一个文件系统覆盖在另一个文件系统上面。它将单个Linux主机上的两个目录分层,并将它们显示为单个目录,这些目录称为层,overlay的下层目录为“lowerdir”,上层目录为“upperdir”,合并目录为“merged”。
在一些实施例中,通过沙箱主进程创建覆盖读写隔离层之后,可以对整个应用启动装置内的进程进行刷新,从而保证沙箱内的信息能够正常显示。比如,可以使命名空间内的进程的标识正常显示。
另外,由于目标应用是作为沙箱主进程中的一个子进程存在的,这样,创建应用运行环境的过程中就需要一定的权限,也即是,该沙箱所处的命名空间具有这个权限,该权限是Linux系统中的最高权限,可以方便地对操作系统的部件进行删除或更改。这样,后续在沙箱中的所有操作都是在具体这个权限的命名空间中进行。
步骤204:沙箱客户端进程根据该命名空间的标识,将目标应用作为沙箱主进程的子进程,在创建有应用运行环境的沙箱中运行目标应用。
在一些实施例中,沙箱客户端进程可以创建第一子进程,根据命名空间的标识,通过第一子进程调用操作系统的空间进入接口进入创建有应用运行环境的沙箱中。之后,沙箱客户端进程在第一子进程中创建第二子进程,第一子进程和第二子进程属于同一个父进程。在第二子进程中运行目标应用。
其中,空间进入接口可以为setns接口,setns接口的参数可以为命名空间的标识,这样,通过setns接口可以进入该命名空间中,也即是,进入创建有应用运行环境的沙箱中。
作为一种示例,可以通过第一子进程调用clone接口,进而在第一子进程中创建第二子进程,且该clone接口的参数为CLONE_PARENT标志。由于CLONE_PARENT标志可以保证创建的子进程的父进程是调用者的父进程,且创建的子进程和创建者是兄弟进程,而不是父子进程,因此,通过带有CLONE_PARENT标志的clone接口创建的第二子进程和第一子进程属于同一父进程,也即是,这两个进程是兄弟进程。
在一些实施例中,在运行目标应用之后,沙箱客户端进程可以将沙箱主进程的标识以及目标应用的进程标识发送给资源调度进程,从而便于资源调度进程的管理。
在一些实施例中,可以针对不同的用户组设置不同的用户权限,也即是,同一个用户组对应同一个用户权限。这样,在沙箱客户端进程接收到沙箱主进程发送的命名空间的标识之后,沙箱客户端进程可以为沙箱主进程设置用户标识,以及确定该用户标识所属用户组的组标识。也即是,为沙箱主进程设置用户标识,从而确定沙箱主进程对应的用户权限。
可选地,在确定沙箱主进程对应的用户权限,可以向权限文件中写入用于禁止权限修改的指示信息。比如,用于禁止权限修改的指示信息为deny值。这样,后续在修改权限时,可以确定权限文件中的指示信息是否为deny值,如果是,那么可以确定当前禁止进行权限修改,从而提高安全性。
上述步骤201-204是启动目标应用的过程,接下来将结合两种方式对结束目标应用的运行进行介绍。
第一种方式,资源调度进程向目标应用发送退出信号。在目标应用接收到该退出信号之后,可以释放自身所占用的资源,进而退出。
由于第一种方式是通过目标应用自身释放所占用的资源,因此,可以保证资源释放的彻底性。而且,第一种方式中,资源调度进程可以指示目标应用释放哪些资源,也即是,可以对资源的释放进行定制。
第二种方式,资源调度进程向沙箱主进程发送一个结束信号,也即是,资源调度进程可以通过杀死沙箱主进程的方式,来结束目标应用的运行。
基于上述描述,在沙箱主进程退出之后,整个沙箱就相当于被销毁了,而目标应用是作为沙箱主进程的子进程来运行的,因此,在杀死沙箱主进程之后,沙箱中的所有进程都会被强制退出,这样,就会结束目标应用的运行。而且,杀死沙箱主进程时,沙箱主进程会向操作系统的内核发送第一通知信号,第一通知信号用于通知沙箱主进程已退出。这样,操作系统的内核就会来释放沙箱所占用的资源。由于在这种方式中,通过操作系统的内核可以释放资源,从而可以简化资源调度进程的逻辑,以及保证资源释放的彻底性。
在一些实施例中,在沙箱主进程退出时,沙箱主进程还可以向沙箱服务端进程发送其父进程发送第二通知信号,也即是,向其父进程发送第二通知信号,第二通知信号用于指示沙箱主进程已退出。示例的,第二通知信号可以为SIGCHLD信号。
本申请实施例不仅可以通过上述两种方式来结束目标应用的运行,还可以通过其他的方式来结束目标应用的运行。示例的,沙箱主进程因为一些原因自动退出的情况,也会结束目标应用的运行。比如,沙箱主进程因为一些故障自动退出的情况。
可选地,在目标应用结束运行之后,沙箱服务端进程就可以卸载掉之前绑定的外设设备,而且,操作系统的内核也会卸载掉覆盖读写隔离层。
在本申请实施例中,由于沙箱处于一个命名空间中,且处于命名空间中的进程只能看到与自己相关的一部分资源,不能看到其他进程相关资源,也即是,处于命名空间的进程可以相对于外界隔离。因此,在沙箱中创建应用运行环境之后,可以在沙箱中运行目标应用。也即是,在命名空间中运行目标应用,这样可以提高应用运行的安全性。另外,目标应用的程序包为squashfs格式的,这就可以大大的节省磁盘空间。
图3是本申请实施例提供的一种应用启动装置的结构示意图,该应用启动装置可以由软件、硬件或者两者的结合实现成为电子设备的部分或者全部。请参考图3,该装置包括:沙箱创建模块301、运行环境创建模块302和应用运行模块303。
沙箱创建模块301,用于调用沙箱创建接口创建沙箱,该沙箱处于一个命名空间中,且该沙箱中包括沙箱主进程;
运行环境创建模块302,用于通过沙箱主进程在沙箱中创建应用运行环境;
应用运行模块303,用于根据该命名空间的标识,将目标应用作为沙箱主进程的子进程,在创建有应用运行环境的沙箱中运行目标应用。
可选地,沙箱创建接口为clone接口,clone接口的参数包括第一标志和第二标志,第一标志用于指示沙箱主进程的标识与其父进程的标识相同,第二标志用于标识命名空间。
可选地,运行环境创建模块302包括:
获取子模块,用于通过沙箱主进程调用设备管理接口获取可用的外设设备;
绑定子模块,用于通过沙箱主进程将压缩格式的目标应用的程序包,绑定到获取的外设设备上,并将获取的外设设备挂载到目标应用的执行路径上;
第一创建子模块,用于通过沙箱主进程创建覆盖读写隔离层,覆盖读写隔离层是指沙箱中的可读写虚拟文件系统。
可选地,创建子模块主要用于:
通过沙箱主进程遍历操作系统的根目录;
通过沙箱主进程在命名空间中,为操作系统的根目录中除动态目录之外的根目录叠加覆盖读写隔离层,以使目标应用拥有独立的可读写虚拟文件系统。
可选地,应用运行模块303包括:
第二创建子模块,用于创建第一子进程;
进入子模块,用于根据命名空间的标识,通过第一子进程调用操作系统的空间进入接口进入创建有应用运行环境的沙箱中;
第三创建子模块,用于在第一子进程中创建第二子进程,第一子进程和第二子进程属于同一个父进程;
运行子模块,用于在第二子进程中运行目标应用。
在本申请实施例中,由于沙箱处于一个命名空间中,且处于命名空间中的进程只能看到与自己相关的一部分资源,不能看到其他进程相关资源,也即是,处于命名空间的进程可以相对于外界隔离。因此,在沙箱中创建应用运行环境之后,可以在沙箱中运行目标应用。也即是,在命名空间中运行目标应用,这样可以提高应用运行的安全性。
需要说明的是:上述实施例提供的应用启动装置在启动应用时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的应用启动装置与应用启动方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
图4是本申请实施例提供的一种电子设备400的结构框图。该电子设备400可以是便携式移动终端,比如:智能手机、平板电脑、MP3播放器(Moving Picture Experts GroupAudio Layer III,动态影像专家压缩标准音频层面3)、MP4(Moving Picture ExpertsGroup Audio Layer IV,动态影像专家压缩标准音频层面4)播放器、笔记本电脑或台式电脑。电子设备400还可能被称为用户设备、便携式电子设备、膝上型电子设备、台式电子设备等其他名称。
通常,电子设备400包括有:处理器401和存储器402。
处理器401可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器401可以采用DSP(Digital Signal Processing,数字信号处理)、FPGA(Field-Programmable Gate Array,现场可编程门阵列)、PLA(Programmable Logic Array,可编程逻辑阵列)中的至少一种硬件形式来实现。处理器401也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称CPU(Central ProcessingUnit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器401可以在集成有GPU(Graphics Processing Unit,图像处理器),GPU用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器401还可以包括AI(Artificial Intelligence,人工智能)处理器,该AI处理器用于处理有关机器学习的计算操作。
存储器402可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器402还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。在一些实施例中,存储器402中的非暂态的计算机可读存储介质用于存储至少一个指令,该至少一个指令用于被处理器401所执行以实现本申请中方法实施例提供的应用启动方法。
在一些实施例中,电子设备400还可选包括有:外围设备接口403和至少一个外围设备。处理器401、存储器402和外围设备接口403之间可以通过总线或信号线相连。各个外围设备可以通过总线、信号线或电路板与外围设备接口403相连。具体地,外围设备包括:射频电路404、触摸显示屏405、摄像头406、音频电路407、定位组件408和电源409中的至少一种。
外围设备接口403可被用于将I/O(Input/Output,输入/输出)相关的至少一个外围设备连接到处理器401和存储器402。在一些实施例中,处理器401、存储器402和外围设备接口403被集成在同一芯片或电路板上;在一些其他实施例中,处理器401、存储器402和外围设备接口403中的任意一个或两个可以在单独的芯片或电路板上实现,本实施例对此不加以限定。
射频电路404用于接收和发射RF(Radio Frequency,射频)信号,也称电磁信号。射频电路404通过电磁信号与通信网络以及其他通信设备进行通信。射频电路404将电信号转换为电磁信号进行发送,或者,将接收到的电磁信号转换为电信号。可选地,射频电路404包括:天线系统、RF收发器、一个或多个放大器、调谐器、振荡器、数字信号处理器、编解码芯片组、用户身份模块卡等等。射频电路404可以通过至少一种无线通信协议来与其它电子设备进行通信。该无线通信协议包括但不限于:万维网、城域网、内联网、各代移动通信网络(2G、3G、4G及5G)、无线局域网和/或WiFi(Wireless Fidelity,无线保真)网络。在一些实施例中,射频电路404还可以包括NFC(Near Field Communication,近距离无线通信)有关的电路,本申请对此不加以限定。
显示屏405用于显示UI(User Interface,用户界面)。该UI可以包括图形、文本、图标、视频及其它们的任意组合。当显示屏405是触摸显示屏时,显示屏405还具有采集在显示屏405的表面或表面上方的触摸信号的能力。该触摸信号可以作为控制信号输入至处理器401进行处理。此时,显示屏405还可以用于提供虚拟按钮和/或虚拟键盘,也称软按钮和/或软键盘。在一些实施例中,显示屏405可以为一个,设置电子设备400的前面板;在另一些实施例中,显示屏405可以为至少两个,分别设置在电子设备400的不同表面或呈折叠设计;在再一些实施例中,显示屏405可以是柔性显示屏,设置在电子设备400的弯曲表面上或折叠面上。甚至,显示屏405还可以设置成非矩形的不规则图形,也即异形屏。显示屏405可以采用LCD(Liquid Crystal Display,液晶显示屏)、OLED(Organic Light-Emitting Diode,有机发光二极管)等材质制备。
摄像头组件406用于采集图像或视频。可选地,摄像头组件406包括前置摄像头和后置摄像头。通常,前置摄像头设置在电子设备的前面板,后置摄像头设置在电子设备的背面。在一些实施例中,后置摄像头为至少两个,分别为主摄像头、景深摄像头、广角摄像头、长焦摄像头中的任意一种,以实现主摄像头和景深摄像头融合实现背景虚化功能、主摄像头和广角摄像头融合实现全景拍摄以及VR(Virtual Reality,虚拟现实)拍摄功能或者其它融合拍摄功能。在一些实施例中,摄像头组件406还可以包括闪光灯。闪光灯可以是单色温闪光灯,也可以是双色温闪光灯。双色温闪光灯是指暖光闪光灯和冷光闪光灯的组合,可以用于不同色温下的光线补偿。
音频电路407可以包括麦克风和扬声器。麦克风用于采集用户及环境的声波,并将声波转换为电信号输入至处理器401进行处理,或者输入至射频电路404以实现语音通信。出于立体声采集或降噪的目的,麦克风可以为多个,分别设置在电子设备400的不同部位。麦克风还可以是阵列麦克风或全向采集型麦克风。扬声器则用于将来自处理器401或射频电路404的电信号转换为声波。扬声器可以是传统的薄膜扬声器,也可以是压电陶瓷扬声器。当扬声器是压电陶瓷扬声器时,不仅可以将电信号转换为人类可听见的声波,也可以将电信号转换为人类听不见的声波以进行测距等用途。在一些实施例中,音频电路407还可以包括耳机插孔。
定位组件408用于定位电子设备400的当前地理位置,以实现导航或LBS(LocationBased Service,基于位置的服务)。定位组件408可以是基于美国的GPS(GlobalPositioning System,全球定位系统)、中国的北斗系统或俄罗斯的伽利略系统的定位组件。
电源409用于为电子设备400中的各个组件进行供电。电源409可以是交流电、直流电、一次性电池或可充电电池。当电源409包括可充电电池时,该可充电电池可以是有线充电电池或无线充电电池。有线充电电池是通过有线线路充电的电池,无线充电电池是通过无线线圈充电的电池。该可充电电池还可以用于支持快充技术。
在一些实施例中,电子设备400还包括有一个或多个传感器410。该一个或多个传感器410包括但不限于:加速度传感器411、陀螺仪传感器412、压力传感器413、指纹传感器414、光学传感器415以及接近传感器416。
加速度传感器411可以检测以电子设备400建立的坐标系的三个坐标轴上的加速度大小。比如,加速度传感器411可以用于检测重力加速度在三个坐标轴上的分量。处理器401可以根据加速度传感器411采集的重力加速度信号,控制触摸显示屏405以横向视图或纵向视图进行用户界面的显示。加速度传感器411还可以用于游戏或者用户的运动数据的采集。
陀螺仪传感器412可以检测电子设备400的机体方向及转动角度,陀螺仪传感器412可以与加速度传感器411协同采集用户对电子设备400的3D动作。处理器401根据陀螺仪传感器412采集的数据,可以实现如下功能:动作感应(比如根据用户的倾斜操作来改变UI)、拍摄时的图像稳定、游戏控制以及惯性导航。
压力传感器413可以设置在电子设备400的侧边框和/或触摸显示屏405的下层。当压力传感器413设置在电子设备400的侧边框时,可以检测用户对电子设备400的握持信号,由处理器401根据压力传感器413采集的握持信号进行左右手识别或快捷操作。当压力传感器413设置在触摸显示屏405的下层时,由处理器401根据用户对触摸显示屏405的压力操作,实现对UI界面上的可操作性控件进行控制。可操作性控件包括按钮控件、滚动条控件、图标控件、菜单控件中的至少一种。
指纹传感器414用于采集用户的指纹,由处理器401根据指纹传感器414采集到的指纹识别用户的身份,或者,由指纹传感器414根据采集到的指纹识别用户的身份。在识别出用户的身份为可信身份时,由处理器401授权该用户执行相关的敏感操作,该敏感操作包括解锁屏幕、查看加密信息、下载软件、支付及更改设置等。指纹传感器414可以被设置电子设备400的正面、背面或侧面。当电子设备400上设置有物理按键或厂商Logo时,指纹传感器414可以与物理按键或厂商Logo集成在一起。
光学传感器415用于采集环境光强度。在一个实施例中,处理器401可以根据光学传感器415采集的环境光强度,控制触摸显示屏405的显示亮度。具体地,当环境光强度较高时,调高触摸显示屏405的显示亮度;当环境光强度较低时,调低触摸显示屏405的显示亮度。在另一个实施例中,处理器401还可以根据光学传感器415采集的环境光强度,动态调整摄像头组件406的拍摄参数。
接近传感器416,也称距离传感器,通常设置在电子设备400的前面板。接近传感器416用于采集用户与电子设备400的正面之间的距离。在一个实施例中,当接近传感器416检测到用户与电子设备400的正面之间的距离逐渐变小时,由处理器401控制触摸显示屏405从亮屏状态切换为息屏状态;当接近传感器416检测到用户与电子设备400的正面之间的距离逐渐变大时,由处理器401控制触摸显示屏405从息屏状态切换为亮屏状态。
本领域技术人员可以理解,图4中示出的结构并不构成对电子设备400的限定,可以包括比图示更多或更少的组件,或者组合某些组件,或者采用不同的组件布置。
在一些实施例中,还提供了一种计算机可读存储介质,该存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述实施例中应用启动方法的步骤。例如,所述计算机可读存储介质可以是ROM、RAM、CD-ROM、磁带、软盘和光数据存储设备等。
值得注意的是,本申请提到的计算机可读存储介质可以为非易失性存储介质,换句话说,可以是非瞬时性存储介质。
应当理解的是,实现上述实施例的全部或部分步骤可以通过软件、硬件、固件或者其任意结合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。所述计算机指令可以存储在上述计算机可读存储介质中。
也即是,在一些实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述所述的应用启动方法的步骤。
应当理解的是,本文提及的“至少一个”是指一个或多个,“多个”是指两个或两个以上。在本申请的描述中,除非另有说明,“/”表示或的意思,例如,A/B可以表示A或B;本文中的“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,为了便于清楚描述本申请实施例的技术方案,在本申请的实施例中,采用了“第一”、“第二”等字样对功能和作用基本相同的相同项或相似项进行区分。本领域技术人员可以理解“第一”、“第二”等字样并不对数量和执行次序进行限定,并且“第一”、“第二”等字样也并不限定一定不同。
以上所述为本申请提供的实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (8)
1.一种应用启动方法,其特征在于,所述方法包括:
调用沙箱创建接口创建沙箱,所述沙箱处于一个命名空间中,且所述沙箱中包括沙箱主进程;
通过所述沙箱主进程在所述沙箱中创建应用运行环境;
创建第一子进程;根据所述命名空间的标识,通过所述第一子进程调用操作系统的空间进入接口进入创建有所述应用运行环境的沙箱中;在所述第一子进程中创建第二子进程,所述第一子进程和所述第二子进程属于同一个父进程;在所述第二子进程中运行所述目标应用。
2.如权利要求1所述的方法,其特征在于,所述沙箱创建接口为clone接口,所述clone接口的参数包括第一标志和第二标志,所述第一标志用于指示所述沙箱主进程的标识与其父进程的标识相同,所述第二标志用于标识所述命名空间。
3.如权利要求1所述的方法,其特征在于,所述通过所述沙箱主进程在所述沙箱中创建应用运行环境,包括:
通过所述沙箱主进程调用设备管理接口获取可用的外设设备;
通过所述沙箱主进程将压缩格式的所述目标应用的程序包,绑定到获取的外设设备上,并将获取的外设设备挂载到所述目标应用的执行路径上;
通过所述沙箱主进程创建覆盖读写隔离层,所述覆盖读写隔离层是指所述沙箱中的可读写虚拟文件系统。
4.如权利要求3所述的方法,其特征在于,所述通过所述沙箱主进程创建覆盖读写隔离层,包括:
通过所述沙箱主进程遍历操作系统的根目录;
通过所述沙箱主进程在所述命名空间中,为所述操作系统的根目录中除动态目录之外的根目录叠加覆盖读写隔离层,以使所述目标应用拥有独立的可读写虚拟文件系统。
5.一种应用启动装置,其特征在于,所述装置包括:
沙箱创建模块,用于调用沙箱创建接口创建沙箱,所述沙箱处于一个命名空间中,且所述沙箱中包括沙箱主进程;
运行环境创建模块,用于通过所述沙箱主进程在所述沙箱中创建应用运行环境;
应用运行模块,用于根据所述命名空间的标识,将目标应用作为所述沙箱主进程的子进程,在创建有所述应用运行环境的沙箱中运行所述目标应用;
所述应用运行模块包括:
第二创建子模块,用于创建第一子进程;
进入子模块,用于根据所述命名空间的标识,通过所述第一子进程调用操作系统的空间进入接口进入创建有所述应用运行环境的沙箱中;
第三创建子模块,用于在所述第一子进程中创建第二子进程,所述第一子进程和所述第二子进程属于同一个父进程;
运行子模块,用于在所述第二子进程中运行所述目标应用。
6.如权利要求5所述的装置,其特征在于,所述沙箱创建接口为clone接口,所述clone接口的参数包括第一标志和第二标志,所述第一标志用于指示所述沙箱主进程的标识与其父进程的标识相同,所述第二标志用于标识所述命名空间。
7.如权利要求5所述的装置,其特征在于,所述运行环境创建模块包括:
获取子模块,用于通过所述沙箱主进程调用设备管理接口获取可用的外设设备;
绑定子模块,用于通过所述沙箱主进程将压缩格式的所述目标应用的程序包,绑定到获取的外设设备上,并将获取的外设设备挂载到所述目标应用的执行路径上;
第一创建子模块,用于通过所述沙箱主进程创建覆盖读写隔离层,所述覆盖读写隔离层是指所述沙箱中的可读写虚拟文件系统。
8.如权利要求7所述的装置,其特征在于,所述创建子模块主要用于:
通过所述沙箱主进程遍历操作系统的根目录;
通过所述沙箱主进程在所述命名空间中,为所述操作系统的根目录中除动态目录之外的根目录叠加覆盖读写隔离层,以使所述目标应用拥有独立的可读写虚拟文件系统。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010161027.4A CN113378154B (zh) | 2020-03-10 | 2020-03-10 | 应用启动方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010161027.4A CN113378154B (zh) | 2020-03-10 | 2020-03-10 | 应用启动方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113378154A CN113378154A (zh) | 2021-09-10 |
CN113378154B true CN113378154B (zh) | 2022-06-17 |
Family
ID=77568594
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010161027.4A Active CN113378154B (zh) | 2020-03-10 | 2020-03-10 | 应用启动方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113378154B (zh) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104714839A (zh) * | 2013-12-12 | 2015-06-17 | 腾讯科技(深圳)有限公司 | 一种控制进程生命期的方法和装置 |
CN108985086A (zh) * | 2018-07-18 | 2018-12-11 | 中软信息系统工程有限公司 | 应用程序权限控制方法、装置及电子设备 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102436508B (zh) * | 2011-12-28 | 2013-08-14 | 奇智软件(北京)有限公司 | 基于沙箱技术浏览网页的方法及装置 |
-
2020
- 2020-03-10 CN CN202010161027.4A patent/CN113378154B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104714839A (zh) * | 2013-12-12 | 2015-06-17 | 腾讯科技(深圳)有限公司 | 一种控制进程生命期的方法和装置 |
CN108985086A (zh) * | 2018-07-18 | 2018-12-11 | 中软信息系统工程有限公司 | 应用程序权限控制方法、装置及电子设备 |
Non-Patent Citations (1)
Title |
---|
基于多安全机制的Linux应用沙箱的设计与实现;李晨;《集成技术》;20140731;第31-37页 * |
Also Published As
Publication number | Publication date |
---|---|
CN113378154A (zh) | 2021-09-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110308956B (zh) | 一种应用界面显示方法、装置及移动终端 | |
CN110674022B (zh) | 行为数据获取方法、装置及存储介质 | |
CN111752666B (zh) | 窗口显示方法、装置和终端 | |
CN108717365B (zh) | 在应用程序中执行功能的方法和装置 | |
CN110851823B (zh) | 数据访问方法、装置、终端及存储介质 | |
CN110677713B (zh) | 视频图像处理方法及装置、存储介质 | |
CN109783176B (zh) | 切换页面的方法和装置 | |
CN111881423A (zh) | 限制功能使用授权方法、装置、系统 | |
CN112118353A (zh) | 信息显示方法、装置、终端及计算机可读存储介质 | |
CN108132817B (zh) | 对象管理方法及装置 | |
CN112181915A (zh) | 执行业务的方法、装置、终端和存储介质 | |
CN111580892A (zh) | 一种业务组件调用的方法、装置、终端和存储介质 | |
CN112597417B (zh) | 页面更新方法、装置、电子设备及存储介质 | |
CN113378154B (zh) | 应用启动方法及装置 | |
CN111711841B (zh) | 图像帧播放方法、装置、终端及存储介质 | |
CN114594885A (zh) | 应用图标的管理方法、装置、设备及计算机可读存储介质 | |
CN114296824A (zh) | 页面信息的配置方法、装置、设备及计算机可读存储介质 | |
CN114595019A (zh) | 应用程序的主题设置方法、装置、设备及存储介质 | |
CN108881715B (zh) | 拍摄模式的启用方法、装置、终端及存储介质 | |
CN108519913B (zh) | 应用程序的运行状态管理方法、装置、存储介质及终端 | |
CN110471613B (zh) | 存储数据的方法、读取数据的方法、装置及系统 | |
CN111190751A (zh) | 基于歌单的任务处理方法、装置、计算机设备及存储介质 | |
CN110941458A (zh) | 启动应用程序的方法、装置、设备及存储介质 | |
CN110543305B (zh) | 替换EasyUI组件的方法及装置 | |
CN111522576B (zh) | 应用管理方法、装置、设备及计算机存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right |
Effective date of registration: 20221020 Address after: 83 Intekte Street, Devon, Netherlands Patentee after: VIDAA (Netherlands) International Holdings Ltd. Address before: 266061 room 131, 248 Hong Kong East Road, Laoshan District, Qingdao City, Shandong Province Patentee before: QINGDAO HISENSE MEDIA NETWORKS Ltd. |
|
TR01 | Transfer of patent right |