为智能终端上的应用程序分配运行权限的方法

文档序号:9417730阅读:681来源:国知局
为智能终端上的应用程序分配运行权限的方法【
技术领域
】[0001]本发明涉及智能操作系统
技术领域
,尤其涉及一种为智能终端上的应用程序分配运行权限的方法。【
背景技术
】[0002]目前基于Linux内核的操作系统通常采用“超级用户对普通用户”的应用程序信任状模型,其原理在于:赋予普通用户尽可能低的权限,而把全部的系统权限赋予唯一的root账户。root帐户用来管理系统、安装软件、管理帐户、运行某些服务、安装/卸载文件系统、管理用户、安装软件等。另外,普通用户的很多操作也需要root权限,这通过setuid实现。对于智能终端的操作系统来说,经常有第三方开发的应用程序安装至该操作系统中,而安装到所述操作系统中的所述应用程序要么按照root账户的权限来运行,要么按照普通用户的权限来运行。从系统安装的角度考虑,希望尽量减少第三方开发的应用程序的操作权限,但是同时这也限制了上述第三方开发的应用程序的功能,如果让第三方开发的应用程序以root账户的权限来运行,由于系统权限全部赋予了root账户,这种依赖单一帐户执行特权操作的方式加大了系统的面临风险,很多情况中,需要root权限的应用程序可能只是为了某一特定的系统级操作,例如:绑定到特权端口、打开一个只有root权限可以访问的文件等。除此之外的其它root权限对这个程序都是没有必要的,而同时开放的其他权限可能被利用来攻击系统安全,例如应用程序程序编写存在漏洞,就可能被攻击者利用,获得系统的控制权。[0003]为了解决上述问题,考虑在操作系统内核中加入能力(capability)机制,但目前的便携式智能终端上的操作系统并未实现在内核中加入能力机制的方法,因此目前的便携式智能终端上的操作系统还是存在一定的安全漏洞的。【
发明内容】[0004]为了克服现有技术中的上述缺陷,本发明提供了一种为智能终端上的应用程序分配运行权限的方法,该方法包括:[0005]智能终端上安装的操作系统内设置多个用户角色,每一所述用户角色具有所述操作系统的内核预定的至少一种能力;[0006]在所述操作系统内安装应用程序,并指定所述应用程序对应的所述用户角色;[0007]根据所述应用程序对应的用户角色具有的所述至少一种能力添加所述应用程序的运行权限。[0008]根据本发明的一个方面,该方法中所述操作系统的内核是Linux内核。[0009]根据本发明的另一个方面,该方法中所述用户角色包括:系统服务角色、系统管理角色、应用安装角色、开发者角色、系统审计角色中任一或其组合。[0010]根据本发明的另一个方面,该方法中所述系统服务角色用于管理所述操作系统的系统服务的运行;所述系统管理角色用于管理所述操作系统中系统级应用程序的运行;所述应用安装角色用于管理所述操作系统中应用程序的安装和卸载;所述开发者角色用于管理第三方开发的应用程序;所述系统设计角色用于管理所述操作系统的系统审计。[0011]根据本发明的另一个方面,该方法中所述系统服务包括:时间服务、网络管理服务、防火墙服务、用户界面服务、输入法服务中任一或其组合。[0012]根据本发明的另一个方面,该方法中所述能力用于描述所述应用程序或其运行时生成的进程所具有的操作权限。[0013]根据本发明的另一个方面,该方法中所述操作权限包括:访问文件系统、产生通信数据、更改或设置数据、调用硬件、更改系统时钟中任一或其组合。根据本发明的另一个方面,该方法中所述智能终端包括:智能手机、平板电脑、个人计算机或智能家电设备。[0014]本发明所提供的为智能终端上的应用程序分配运行权限的方法在操作系统中引入了能力机制,将root账户的权限分割成不同的能力,并在安装应用程序时根据应用程序的用户角色赋予该应用程序以确定其运行权限,实现了对应用程序的权限操作的访问控制,即使操作系统的攻击者通过应用程序对操作系统进行攻击,也仅能获得该应用程序对应的用户角色的能力,而不是整个操作系统的所有能力,因此提升了操作系统的安全性。【附图说明】[0015]通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:[0016]图1是根据本发明的为智能终端上的应用程序分配运行权限的方法的一种【具体实施方式】的流程图;[0017]图2是用于实现本发明的为智能终端上的应用程序分配运行权限的智能终端的结构示意图;[0018]附图中相同或相似的附图标记代表相同或相似的部件。【具体实施方式】[0019]为了更好地理解和阐释本发明,下面将结合附图对本发明作进一步的详细描述。[0020]本发明提供了一种即时通信的消息的处理方法,请参考图1,图1是根据本发明的为智能终端上的应用程序分配运行权限的方法的一种【具体实施方式】的流程图,该方法包括:[0021]步骤S100,智能终端上安装的操作系统内设置多个用户角色,每一所述用户角色具有所述操作系统的内核预定的至少一种能力;[0022]步骤S200,在所述操作系统内安装应用程序,并指定所述应用程序对应的所述用户角色;[0023]步骤S300,根据所述应用程序对应的用户角色具有的所述至少一种能力添加所述应用程序的运行权限。[0024]具体地,所述智能终端包括智能手机、平板电脑、个人计算机或智能家电设备。所述操作系统是具有Linux内核的操作系统,典型地,所述智能终端上安装了例如SyberOS或Android等基于Linux内核操作系统。[0025]在步骤SlOO中,在所述操作系统内设置多个用户角色,设置上述多个角色的目的是为运行在不同所述用户角色提供的环境下的应用程序能具有不同的系统运行权限。[0026]相应地,对于每一安装在所述操作系统内的应用程序,都执行步骤S200为其指定对应的所述用户角色。可以根据所述应用程序所完成的功能为其指定其所属的所述用户角色。优选地,出于安全考虑,所述应用程序安装在所述操作系统时,操作系统仅指定该应用程序对应唯一的所述用户角色,且后续无法更改该应用程序对应的所述用户角色,这样的设计提升了系统的安全性。可选地,可以在所述应用程序安装完成后更改该应用程序对应的所述用户角色,以便于更灵活地对所述应用程序进行权限控制,但本领域技术人员可以理解该可选的方案中操作系统会面临统安全风险。[0027]进一步地,执行步骤S300,依赖每一所述用户角色具有的所述至少一种能力,每一所述用户角色下运行的应用程序仅具有该类用户角色具有的所述能力提供的运行权限。也即所述应用程序在后续运行中不能获得与其并未对应的所述用户角色所具有的所述能力,这样保证了安装在所述操作系统中的应用程序的运行权限被控制在风险可预见的范围内。本领域技术人员可以理解,不同功能的应用程序其所需的所述能力是不一样的。[0028]优选地,在本【具体实施方式】中,所述用户角色包括:系统服务角色、系统管理角色、应用安装角色、开发者角色、系统审计角色中任一或其组合。其中:所述系统服务角色用于管理所述操作系统的系统服务的运行;所述系统管理角色用于管理所述操作系统中系统级应用程序的运行;所述应用安装角色用于管理所述操作系统中应用程序的安装和卸载;所述开发者角色用于管理第三方开发的应用程序;所述系统设计角色用于管理所述操作系统的系统审计。具体地,所述系统服务包括:时间服务、网络管理服务、防火墙服务、用户界面服务、输入法服务中任一或其组合。本发明的实施者可以根据设计需求具体分配每一所述用户角色具有的所述能力,以便于正常实现上述用户角色的功能。更具体地,所述能力用于描述所述应用程序或其运行时生成的进程所具有的操作权限,其中所述操作权限包括但不限于:访问文件系统、产生通信数据、更改或设置数据、调用硬件、更改系统时钟中任一或其组合。[0029]更具体地,在基于Linux内核的能力机制中,所述应用程序运行时生成的进程有三个和能力有关的位图-1nheritable(I)、permitted(P)和effective(E),分别对应进程描述符structcred结构体里面的cap_effective,cap_inheritable,cap_permittedo每种能力由一位表示,I表示具有某种能力,O表示没有。当一个进程要进行某个特权操作时,操作系统会检查cap_efTective的对应位是否有效。例如,如果一个进程要设置系统的时钟,Linux的内核就会检查cap_effective的CAP_SYS_HME位(第25位)是否有效。其中cap_permitted表示进程所拥有的最大能力集;cap_effective表示进程当前可用的能力集,可以看做是cap_permitted的一个子集;而cap_inheitable则表示进程可以传递给其子进程的能力集。cap_permitted表示进程能够使用的能力。在cap_permitted中可以包含cap_effective中没有的能力,这些能力是被进程自己临时放弃的。进程放弃没有必要的能力对于提高安全性大有助益,例如,Ping只需要CAP_NET_RAW,如果它放弃除这个能力之外的其它能力,即使存在安全缺陷,也不会对系统造成太大的损害;cap_inheritable表示能够被当前进程执行的程序继承的能力。操作系统根据进程的cap_effective能力集进行访问控制,cap_effective为cap_permitted的子集,进程可以通过取消cap_effective中的某些能力来放弃进程的一些特权。相应地,所述应用程序的可执行文件也拥有三组能力集,对应于进程的三组能力集,分别是cap_effective,cap_allowed和cap_forced,其中,cap_allowed表示程序运行时可从原进程的cap_inheritable中集成的能力集;cap_forced表示运行文件时必须拥有才能完成其服务的能力集;而Cap_efTeCtiVe则表示文件开始运行时可以使用的能力。[0030]以Linux内核的2.2版本为例,所述能力例如包括如下内容:[0031]CAP_CH0ffN:修改文件属主的权限[0032]CAP_DAC_OVERRIDE:忽略文件的DAC访问限制[0033]CAP_DAC_READ_SEARCH:忽略文件读及目录搜索的DAC访问限制当前第1页1 2 
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1