一种应用进程权限管理方法和装置技术领域
本发明涉及计算机技术领域,尤其涉及一种应用进程权限管理方法和装置。
背景技术
在计算机系统中,第三方应用程序一般是以临时用户的身份进行运行的,
这使得该应用程序的权限受限,例如不能对系统文件进行访问、增、删、改等
操作,因此经常希望安装的应用程序能够得到更高的权限。例如有的android安
卓系统的移动设备已经进行了Root设置从而获取了超级管理员用户账户的超级
权限,但是在该移动设备中安装的应用程序若需要以root权限运行,则需要通
过s位提权,s位即文件的setuid属性,当一个可执行文件拥有setuid属性的时
候,执行该文件的用户将获取文件所有者(通常是root用户)的权限。Root用
户在Unix系统中拥有最高权限,s位提权即普通权限用户通过执行Root用户拥
有的带setuid属性的可执行文件以获得最高权限。但是在android4.3版本之后,
引入了SELinux内核模块,并且其他厂商也陆续增加对系统分区s位提权的限
制,导致应用程序无法采用旧的root授权方式以超级权限运行。
发明内容
有鉴于此,本发明实施例提供一种应用进程权限管理方法和装置,可让应
用进程获得超级权限。
为了解决上述技术问题,本发明实施例提供了一种应用进程权限管理方法,
所述方法包括:
权限管理服务获取应用进程发送的超级权限请求,所述权限管理服务为操
作系统中预设的具有超级权限的守护进程;
所述权限管理服务为所述应用进程创建对应的代理子进程,所述代理子进
程继承所述权限管理服务的超级权限;
所述权限管理服务将所述应用进程的进程信息发送给所述应用进程对应的
代理子进程;
所述代理子进程根据所述应用进程的进程信息反向连接所述应用进程,并
代理执行所述应用进程获取的进程命令。
相应地,本发明实施例还提供了一种应用程序权限管理装置,包括权限管
理服务和由所述权限管理服务创建的代理子进程,所述权限管理服务为操作系
统中预设的具有超级权限的守护进程,所述代理子进程继承所述权限管理服务
的超级权限,其中:
所述权限管理服务用于:获取应用进程发送的超级权限请求;为所述应用
进程创建对应的代理子进程;将所述应用进程的进程信息发送给所述应用进程
对应的代理子进程;
所述代理子进程用于:根据所述应用进程的进程信息反向连接所述应用进
程,并代理执行所述应用进程获取的进程命令。
本发明实施例中,应用进程可以通过权限管理服务创建的代理子进程执行
高权限的进程命令,包括读写系统文件,调用只用超级权限才能调用的系统接
口或功能等,同时由代理子进程反向连接至应用进程,不再需要权限管理服务
进行命令或数据的中间转发,节省了中间环节,降低系统开销。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施
例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述
中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付
出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例中的一种应用进程权限管理方法的流程示意图;
图2是本发明实施例中的创建权限管理服务的流程示意图;
图3是本发明另一实施例中的应用进程权限管理方法的流程示意图;
图4是反向连接前应用进程和代理子进程的工作流示意图;
图5是反向连接后应用进程和代理子进程的工作流示意图;
图6是本发明实施例中的一种应用进程权限管理装置的结构示意图;
图7是本发明实施例中权限管理服务发出授权确认提示的示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清
楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是
全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造
性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例中提及的应用进程权限管理方法和装置,可以实施在如平板
电脑、智能手机、车载终端、电子阅读器、智能穿戴设备等终端中。本发明实
施例中的应用进程权限管理方法可以由应用进程权限管理装置执行,而本发明
实施例中的应用进程权限管理装置可以为运行在上述终端中的服务进程。
图1是本发明实施例中的一种应用进程权限管理方法的流程示意图,如图
所示本实施例中的应用进程权限管理方法可以包括以下流程:
S101,权限管理服务获取应用进程发送的超级权限请求,所述权限管理服
务为操作系统中预设的具有超级权限的守护进程。
在可选实施例中,应用进程在需要执行具有高级权限的进程命令时,或接
收到用户输入权限提升指令时,可以向权限管理服务发送超级权限请求。示例
性的,需要超级权限的应用进程可以通过执行su命令(su命令是linux系统下
切换用户身份权限的命令,例如可以应用进程运行内置的su执行程序)依照预
设的通讯协议连接至权限管理服务,进而向权限管理服务器发送超级权限请求。
具体的,所述守护进程随操作系统启动而启动,随操作系统关闭而关闭,其脱
离于界面在后台运行,守护进程脱离于界面是为了避免进程在执行过程中的信
息在任何界面上显示并且进程也不会被任何界面所产生的界面信息所打断,这
里说的界面即与用户进行交流的对象。本发明实施例中的权限管理服务在随操
作系统启动后,不会自动降低运行权限,而是保持超级权限运行。本发明实施
例提供的创建守护进程的方式包括但不限于以下两种:
1)将所述权限管理服务的执行文件填充操作系统当前的系统空服务,创建
所述权限管理服务。例如可以通过解析操作系统的初始化文件(例如init.rc文件),
确定所述初始化文件中描述的系统服务的路径下不存在执行文件,即确定该系
统服务为系统空服务;进而将所述权限管理服务的执行文件保存在所述系统空
服务的路径下。这样才操作系统启动时,会尝试自动启动初始化文件中描述的
所有系统服务,从而启动所述权限管理服务的执行文件。
2)将所述权限管理服务的执行文件替换操作系统中已有的系统服务的执行
文件,创建所述权限管理服务并代理被替换的系统服务。即将权限管理服务替
换原有的系统服务,并在运行权限管理服务的同时代理原有的系统服务,例如
负责将数据和信令转发至原有系统服务。
S102,所述权限管理服务为所述应用进程创建对应的代理子进程,所述代
理子进程继承所述权限管理服务的超级权限。
在接收到应用进程发送的超级权限请求后,权限管理服务可以为该应用进
程创建与其唯一对应的代理子进程,该代理子进程专门负责为对应的应用进程
服务,由于所述权限管理服务具有超级权限,其创建的代理子进程通过继承权
限管理服务的权限,因此也是在超级权限下运行。
S103,所述权限管理服务将所述应用进程的进程信息发送给所述应用进程
对应的代理子进程。
所述应用进程的进程信息,可以包括该应用进程的工作流文件的文件标识
信息,还可以包括进程ID等,所述工作流文件可以为应用进程的界面读写文件,
所述工作流包括输入流、输出流、错误流等,所述应用进程的工作流文件可以
为同一文件,也可以根据不同工作流有不同的文件。
S104,所述代理子进程根据所述应用进程的进程信息反向连接所述应用进
程,并代理执行所述应用进程获取的进程命令。
所述反向连接,为应用进程开放进程信息,由其他进程(服务进程)根据
进程信息连接应用进程。例如图4所示,在反向连接前,所述代理子进程指向
空的工作流文件。如图5所示,在接收到权限管理服务发送的应用进程的进程
信息后,所述代理子进程可以根据应用进程的进程信息,反向连接至对应的应
用进程的工作流文件,从而代理子进程可以从该应用进程的输入流得到该应用
进程获取的进程命令,并将执行该进程命令的执行结果写入所述应用进程的输
出流文件或错误流文件。这样,所述应用进程就可以实现通过代理子进程执行
高权限的进程命令,包括读写系统文件,调用只用超级权限才能调用的系统接
口或功能等,同时由代理子进程反向连接至应用进程,不再需要权限管理服务
进行命令或数据的中间转发,节省了中间环节,降低系统开销。
进而在可选实施例中,创建所述权限管理服务可以如图2所示包括以下步
骤:
S201,解析操作系统的初始化文件,获取初始化文件中描述的系统服务。
具体的,可以通过解析操作系统的初始化文件(例如android系统的init.rc
文件),获取系统服务列表,以及系统服务列表中各系统服务存放执行文件的路
径。
S202,判断扫描初始化文件中描述的系统服务的路径下是否存在执行文件,
若是则扫描下一系统服务,否则执行S203,若初始化文件中描述的所有系统服
务均不是系统空服务,则可以结束本流程,例如可以通过将所述权限管理服务
的执行文件替换操作系统中已有的系统服务的执行文件,创建所述权限管理服
务并代理被替换的系统服务。
S203,确定该系统服务为系统空服务。
S204,将所述权限管理服务的执行文件保存在所述系统空服务的路径下。
S205,操作系统启动时开启所述权限管理服务。
图3是本发明另一实施例中的一种应用进程权限管理方法的流程示意图,
如图所示本实施例中的应用进程权限管理方法可以包括以下流程:
S301,权限管理服务获取应用进程发送的超级权限请求,所述权限管理服
务为操作系统中预设的具有超级权限的守护进程。
在可选实施例中,应用进程可以通过执行su命令,向权限管理服务发起请
求。
S302,权限管理服务对应用进程进行鉴权,鉴权成功则执行S303,否则可
以拒绝该应用程序的超级权限请求。
在可选实现方式中,权限管理服务可以根据发送超级权限请求的应用进程,
弹出如图7所示的授权确认提示,若得到用户输入的确认则可以表示对应用进
程的鉴权成功。
在另一可选实现方式中,权限管理服务可以根据应用进程的证书或应用签
名对该应用进程是否合法进程进行鉴权,若该应用进程携带的证书或应用签名
是权限管理服务预设的合法证书或合法签名,则可以确定对应用进程进行鉴权
成功。
S303,所述权限管理服务为所述应用进程创建对应的代理子进程,所述代
理子进程继承所述权限管理服务的超级权限。
在接收到应用进程发送的超级权限请求后,权限管理服务可以为该应用进
程创建与其唯一对应的代理子进程,该代理子进程专门负责为对应的应用进程
服务,由于所述权限管理服务具有超级权限,其创建的代理子进程通过继承权
限管理服务的权限,因此也是在超级权限下运行。
S304,所述权限管理服务将所述应用进程的进程信息发送给所述应用进程
对应的代理子进程。
所述应用进程的进程信息,可以包括该应用进程的工作流文件的文件标识
信息,还可以包括进程ID等,所述工作流文件可以为应用进程的界面读写文件,
所述工作流包括输入流、输出流、错误流等,所述应用进程的工作流文件可以
为同一文件,也可以根据不同工作流有不同的文件。
S305,所述代理子进程根据所述应用进程的进程信息反向连接所述应用进
程。
所述代理子进程根据所述应用进程的进程信息反向连接所述应用进程。例
如图4所示,在反向连接前,所述代理子进程指向空的工作流文件。如图5所
示,在接收到权限管理服务发送的应用进程的进程信息后,所述代理子进程可
以根据应用进程的进程信息,反向连接至对应的应用进程的工作流文件。
S306,代理子进程从应用进程的输入流文件中获取进程命令,并将执行结
果写入应用进程的输出流文件或错误流文件。
S307,检测到应用进程关闭后,关闭应用进程对应的代理子进程。
本实施例中,权限管理服务在为发送超级权限请求的应用进程创建对应的
代理子进程后,可以定时检测该应用进程的运行状态,或由应用进程在关闭时
发送通知给权限管理服务,从而权限管理服务可以获知该应用进程关闭,从而
关闭应用进程对应的代理子进程,回收该代理子进程所占用的系统资源。
本实施例中,所述应用进程就可以实现通过代理子进程执行高权限的进程
命令,包括读写系统文件,调用只用超级权限才能调用的系统接口或功能等,
同时由代理子进程反向连接至应用进程,不再需要权限管理服务进行命令或数
据的中间转发,节省了中间环节,降低系统开销。
图6是本发明实施例中的一种应用进程权限管理装置的结构示意图,如图
所示本实施例中的应用进程权限管理装置可以包括:权限管理服务61和由所述
权限管理服务61创建的代理子进程62,所述权限管理服务61为操作系统中预
设的具有超级权限的守护进程,所述代理子进程62继承所述权限管理服务610
的超级权限,其中:
所述权限管理服务61用于:获取应用进程发送的超级权限请求;为所述应
用进程创建对应的代理子进程62;将所述应用进程的进程信息发送给所述应用
进程对应的代理子进程62。
在可选实施例中,应用进程61在需要执行具有高级权限的进程命令时,或
接收到用户输入权限提升指令时,可以向权限管理服务62发送超级权限请求。
示例性的,需要超级权限的应用进程61可以通过执行su命令依照预设的通讯协
议连接至权限管理服务62,进而向权限管理服务器62发送超级权限请求。在接
收到应用进程发送的超级权限请求后,权限管理服务61可以为该应用进程创建
与其唯一对应的代理子进程62,该代理子进程62专门负责为对应的应用进程服
务,由于所述权限管理服务61具有超级权限,其创建的代理子进程62通过继
承权限管理服务61的权限,因此也是在超级权限下运行。所述应用进程的进程
信息,可以包括该应用进程的工作流文件的文件标识信息,还可以包括进程ID
等,所述工作流文件可以为应用进程的界面读写文件,所述工作流包括输入流、
输出流、错误流等,所述应用进程的工作流文件可以为同一文件,也可以根据
不同工作流有不同的文件。
所述代理子进程62用于:根据所述应用进程的进程信息反向连接所述应用
进程,并代理执行所述应用进程获取的进程命令。
所述反向连接,为应用进程开放进程信息,由其他进程(如服务进程)根
据进程信息连接应用进程。例如图4所示,在反向连接前,所述代理子进程62
指向空的工作流文件。如图5所示,在接收到权限管理服务61发送的应用进程
的进程信息后,所述代理子进程62可以根据应用进程的进程信息,反向连接至
对应的应用进程的工作流文件,从而代理子进程62可以从该应用进程的输入流
得到该应用进程获取的进程命令,并将执行该进程命令的执行结果写入所述应
用进程的输出流文件或错误流文件。这样,所述应用进程就可以实现通过代理
子进程执行高权限的进程命令,包括读写系统文件,调用只用超级权限才能调
用的系统接口或功能等,同时由代理子进程反向连接至应用进程,不再需要权
限管理服务进行命令或数据的中间转发,节省了中间环节,降低系统开销。
在可选实施例中,应用进程权限管理装置还可以包括:
权限管理服务创建模块60,用于将所述权限管理服务61的执行文件填充操
作系统当前的系统空服务,创建所述权限管理服务61;或用于将所述权限管理
服务61的执行文件替换操作系统中已有的系统服务的执行文件,创建所述权限
管理服务61并代理被替换的系统服务。
进而在可选实施例中,所述权限管理服务创建模块60用于将所述权限管理
服务61的执行文件填充操作系统当前的系统空服务,创建所述权限管理服务61
的情况下,可以进一步包括:
空服务扫描单元601,用于解析操作系统的初始化文件,确定所述初始化文
件中描述的系统服务的路径下不存在执行文件,即确定该系统服务为系统空服
务。具体的,可以通过解析操作系统的初始化文件(例如android系统的init.rc
文件),获取系统服务列表,以及系统服务列表中各系统服务存放执行文件的路
径。
服务填充单元602,用于将所述权限管理服务的执行文件保存在所述系统空
服务的路径下。
进而在可选实施例中,所述权限管理服务61在获取应用进程发送的超级权
限请求之后,还用于:
对所述应用进程进行鉴权,若鉴权成功则为所述应用进程创建对应的代理
子进程62。
在可选实现方式中,权限管理服务61可以根据发送超级权限请求的应用进
程,弹出如图7所示的授权确认提示,若得到用户输入的确认则可以表示对应
用进程的鉴权成功。
在另一可选实现方式中,权限管理服务61可以根据应用进程的证书或应用
签名对该应用进程是否合法进程进行鉴权,若该应用进程携带的证书或应用签
名是权限管理服务61预设的合法证书或合法签名,则可以确定对应用进程进行
鉴权成功。
进而在可选实施例中,所述权限管理服务61还用于:
在检测到所述应用进程关闭后,关闭所述应用进程对应的代理子进程。
本实施例中,权限管理服务在为发送超级权限请求的应用进程创建对应的
代理子进程后,可以定时检测该应用进程的运行状态,或由应用进程在关闭时
发送通知给权限管理服务,从而权限管理服务可以获知该应用进程关闭,从而
关闭应用进程对应的代理子进程,回收该代理子进程所占用的系统资源。
本实施例中,所述应用进程就可以实现通过代理子进程执行高权限的进程
命令,包括读写系统文件,调用只用超级权限才能调用的系统接口或功能等,
同时由代理子进程反向连接至应用进程,不再需要权限管理服务进行命令或数
据的中间转发,节省了中间环节,降低系统开销。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,
是可以通过计算机进程来指令相关的硬件来完成,所述的进程可存储于一计算
机可读取存储介质中,该进程在执行时,可包括如上述各方法的实施例的流程。
其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,
ROM)或随机存储记忆体(Random Access Memory,RAM)等。
以上所揭露的仅为本发明较佳实施例而已,当然不能以此来限定本发明之
权利范围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。