一种Linux能力分配方法及装置的制造方法
【技术领域】
[0001]本申请涉及电数字数据处理领域,尤其涉及一种在使用Linux系统的移动终端中对其应用或系统服务的能力进行分配的方法和装置。
【背景技术】
[0002]在Linux系统中,进程在执行某些命令时需要Root权限。如果拥有Root权限的进程被攻击者劫持,那么该攻击者就可以做所有的事情,非常危险。为了解决这个问题,Linux开发出了一种capability(能力)机制,其将Root所拥有的权限进行了划分,分解成了30多种不同的能力。按进程的需要配置能力,确保进程权限的最小化,进而提高进程的安全性。
[0003]现有方案通常利用setcap命令,为指定的执行文件设置能力,能力值会写到该文件的扩展属性中。在执行该执行文件时,在Kernel(内核)中的exec调用中,读取该文件的扩展属性,如果发现该执行文件设置了能力,则为进程设置相应的能力。
[0004]然而,为执行文件设置能力的现有方案存在两个问题:I)执行文件只有拥有能力和没有能力两种状态。这样,对于执行文件来讲,有些场合需要能力,有些则不需要,这种机制无法满足。2)原来有Root账号时,所运行的命令都不需要设置能力。现在去掉Root账号后,原来所有需要特权的命令都需要设置能力,导致设置能力的命令过多。
【发明内容】
[0005]本申请的目标在于提供一种提高能力设置简便性并确保系统安全的能力分配方法及装置。
[0006]本申请的目标由一种Linux能力分配方法实现,该方法包括:
[0007]确定移动终端的应用或系统服务所需的能力;
[0008]将所述能力与所述应用或系统服务的用户标识Uid之间的对应关系保存到配置文件中;
[0009]在以一uid的身份启动所述应用或系统服务时,为相应启动进程设置uid,读取所述配置文件并获取与uid对应的能力;及
[0010]为运行所述应用或系统服务的进程设置与所述身份的uid对应的能力。
[0011 ]本申请的目标还由一种Linux能力分配装置实现,该装置包括:
[0012]能力确定模块,用于确定移动终端的应用或系统服务所需的能力;
[0013]能力保存模块,用于将所述能力与所述应用或系统服务的用户标识Uid之间的对应关系保存到配置文件中;
[0014]文件读取模块,用于在以一uid的身份启动所述应用或系统服务时,为相应启动进程设置uid,读取所述配置文件并获取与所述身份的uid对应的能力;及
[0015]能力设置模块,用于为运行所述应用或系统服务的进程设置与所述身份的uid对应的能力。
[0016]通过本发明的方法和装置,解决了因去掉Root账号后设置能力权限的命令过多的问题,也解决了执行文件在某些场合需要能力、某些场合不需要能力的问题,即解决了有些命令在不同的场合需要不同权限的问题。
[0017]除非明确指出,在此所用的单数形式“一”、“该”均包括复数含义(即具有“至少一”的意思)。应当进一步理解,说明书中使用的术语“具有”、“包括”和/或“包含”表明存在所述的特征、步骤、操作、元件和/或部件,但不排除存在或增加一个或多个其他特征、步骤、操作、元件、部件和/或其组合。如在此所用的术语“和/或”包括一个或多个列举的相关项目的任何及所有组合。除非明确指出,在此公开的任何方法的步骤不必精确按照所公开的顺序执行。
【附图说明】
[0018]本发明将在下面参考附图并结合优选实施例进行更完全地说明。
[0019]图1为根据本发明方法的一实施例的流程图。
[0020]图2为根据本发明装置的一实施例的结构示意图。
[0021]为清晰起见,这些附图均为示意性及简化的图,它们只给出了对于理解本发明所必要的细节,而省略其他细节。
【具体实施方式】
[0022]通过下面给出的详细描述,本发明的适用范围将显而易见。然而,应当理解,在详细描述和具体例子表明本发明优选实施例的同时,它们仅为说明目的给出。
[0023]图1示出了根据本发明的、用于在使用Linux系统的移动终端如手机中对其系统服务或应用的能力进行分配的方法。该方法改变目前将能力与执行文件结合的机制,提出使能力与Linux的uid机制相结合,为指定的uid设置能力,从而避免了设置能力命令过多的问题,且解决了有些命令在不同的场合需要不同权限的问题,提高了系统安全性。该方法开始于步骤S10,确定移动终端如手机的应用或系统服务所需的能力。例如,在安装新的应用时,通过向移动终端的系统声明需要哪些能力而确定该新的应用所需的能力,例如将所需能力写到系统的配置文件中,如/etc/passwd。之后,处理进行到步骤S20,在配置文件中,保存能力与应用或系统服务的用户标识uid之间的对应关系。例如,系统服务servicel需要能力I,系统服务service2需要能力2,应用appl需要能力3,应用app2需要能力4,依此类推,其中861^;[061、861^;[062、3口口1和3口口2为相应系统服务或应用的用户标识111(1,每一系统服务或应用具有一个唯一的uid。之后,处理进行到步骤S30,在以一 uid如appl的身份启动应用时,修改拥有setuid(设置用户标识)权限的进程,在启动进程将uid设置为appl的同时将组标识gid设置为appl即setgid(appl),读取配置文件,获得与appl对应的能力即能力3。之后,处理进行到步骤S40,调用setcap命令为运行应用appl的进程设置能力3。
[0024]图2示出了根据本发明的Linux能力分配装置的一实施例,其包括:能力确定模块10,用于确定移动终端的应用或系统服务所需的能力;例如,对于新的应用,可通过向移动终端的系统进行声明而确定所需的能力;能力保存模块20,用于将所述能力与所述应用或系统服务的用户标识uid之间的对应关系保存到配置文件中;文件读取模块30,用于在以一uid的身份启动所述应用或系统服务时,为相应启动进程设置uid和设置组标识gid,读取所述配置文件并获取与所述身份的uid对应的能力;及能力设置模块40,用于通过调用setcap命令为运行所述应用或系统服务的进程设置与所述身份的Uid对应的能力。
[0025]—些优选实施例已经在前面进行了说明,但是应当强调的是,本发明不局限于这些实施例,而是可以本发明主题范围内的其它方式实现。
【主权项】
1.一种Linux能力分配方法,其特征在于,所述方法包括: 确定移动终端的应用或系统服务所需的能力; 将所述能力与所述应用或系统服务的用户标识uid之间的对应关系保存到配置文件中; 在以一uid的身份启动所述应用或系统服务时,为相应启动进程设置uid,读取所述配置文件并获取与uid对应的能力;及 为运行所述应用或系统服务的进程设置与所述身份的uid对应的能力。2.根据权利要求1所述的方法,其特征在于,确定所述能力的步骤通过向移动终端的系统声明进行。3.根据权利要求1所述的方法,其特征在于,所述方法还包括: 为所述启动进程设置组标识gid。4.根据权利要求1所述的方法,其特征在于,设置能力的步骤通过setcap命令进行。5.一种Linux能力分配装置,其特征在于,所述装置包括: 能力确定模块,用于确定移动终端的应用或系统服务所需的能力; 能力保存模块,用于将所述能力与所述应用或系统服务的用户标识uid之间的对应关系保存到配置文件中; 文件读取模块,用于在以一 Uid的身份启动所述应用或系统服务时,为相应启动进程设置Uid,读取所述配置文件并获取与所述身份的Uid对应的能力;及 能力设置模块,用于为运行所述应用或系统服务的进程设置与所述身份的Uid对应的能力。6.根据权利要求5所述的装置,其特征在于,所述能力确定模块通过向移动终端的系统进行声明而确定所需的能力。7.根据权利要求5所述的装置,其特征在于,所述装置还包括: 组标识设置模块,用于为所述启动进程设置组标识gid。8.根据权利要求5所述的装置,其特征在于,所述能力设置模块通过setcap命令设置能力。
【专利摘要】本申请公开了一种Linux能力分配方法及装置,其中所述方法包括:确定移动终端的应用或系统服务所需的能力;将所述能力与所述应用或系统服务的用户标识uid之间的对应关系保存到配置文件中;在以一uid的身份启动所述应用或系统服务时,为相应启动进程设置uid,读取所述配置文件并获取与uid对应的能力;及为运行所述应用或系统服务的进程设置与所述身份的uid对应的能力。本申请的方法和装置使得在确保系统安全的同时能更简便地设置能力。
【IPC分类】G06F21/57
【公开号】CN105653960
【申请号】
【发明人】史子旺
【申请人】北京元心科技有限公司
【公开日】2016年6月8日
【申请日】2015年12月31日