本发明涉及计算机领域,尤其涉及一种基于索引节点的Linux访问权限控制方法。
背景技术:
传统的Linux访问控制方式是DAC(Discretionary Access Control,自主访问控制)。这种框架配置使用简单,但是有着明显的不足。root用户拥有无限大的权力,一旦入侵者拿到root权限就等于控制了整个系统,不利于系统安全。
新的Linux访问控制方式采用的是MAC(Mandatory Access control,强制性访问控制)。这种方式对系统的每一项访问都进行了严格的限制,主要通过Linux的LSM框架实现,但是不管是SELinux、Apparmor、Smack还是TOMOYO Linux在配置使用时候都比较繁琐,需要一定的工作量为每个操作都设置权限关系。本发明寻求一种可以快速部署、轻量级的访问权限控制方法。
技术实现要素:
针对现有技术存在的不足,本发明的目的在于提供一种可以快速部署、轻量级的基于索引节点的Linux访问权限控制方法。
为实现上述目的,本发明可以通过以下技术方案予以实现:
一种基于索引节点的Linux访问权限控制方法,包括以下步骤:
S1.修改内核源码,增加系统调用,在内核空间建立索引节点和进程号的对应关系表;
S2.根据步骤S1所述对应关系表修改内核源码,为文件系统的系统调用增加访问权限控制判断;
S3.内核对访问内核空间的用户执行步骤S2所述的访问权限控制判断。
进一步地,步骤S2所述访问权限控制判断的流程为:
S21.进行DAC检查,如果通过检查则执行步骤S22,不通过则终止操作;
S22.判断当前访问索引节点是否在步骤S1建立的对应关系表中,如果是则执行下一步,如果否则进入正常系统调用流程;
S23.判断当前访问进程号是否在步骤S1建立的对应关系表中并与索引节点匹配,如果是则进入正常系统调用流程,如果否则终止操作。
进一步地,步骤S23中所述访问进程号包括其自身进程号以及递归判断其父进程进程号所形成的合集。
进一步地,与所述终止操作的同时还返回错误码。
进一步地,所述错误码包括EBUSY、EINVAL和EFAULT。
进一步地,文件系统的系统调用包括open、read和write。
进一步地,步骤S1中所述对应关系表的载入过程通过系统调用或载入只读设备的方式实现。
与传统的DAC控制方案相比,本发明具有即使拥有root权限也可以根据PID保证某些重要文件的优点。而与MAC方案相比,本发明又具有轻量级、部署实施方便的优点,不需要对每项操作都设置访问规则的优点,可以按需设置修改。
附图说明
图1是本发明的方法流程图;
图2是本发明的访问权限控制判断的流程图。
具体实施方式
下面将结合附图以及具体实施方式对本发明作进一步的说明:
如图1~2所示,本发明所述的基于索引节点的Linux访问权限控制方法,包括以下步骤:
S1.修改内核源码,增加系统调用,系统调用接口初始化后,在内核空间建立索引节点和进程号的对应关系表;其中对应关系表的载入过程通过系统调用或载入只读设备的方式实现。
S2.对内核源码进行修改,根据步骤S1所述对应关系表为文件系统的系统调用增加访问权限控制判断;其中文件系统的系统调用可以根据实际使用场景修改,包括但不限于open,还可以是read、write等等。
上述访问权限控制判断的流程为:
S21.进行传统DAC检查,如果通过检查则执行下一步,不通过则返回终止操作并同时返回错误码。
S22.判断用户当前访问索引节点是否在步骤S1建立的对应关系表中,如果是则执行下一步,如果否则进入正常系统调用流程。这个步骤的作用在于判断当前访问内核空间的是否是重要文件,如果判断结果为是则表示当前访问的有可能是重要文件,需要进行下一步判断;如果判断结果为否则表示当前访问的不是重要文件,所以让它直接进入正常系统调用流程,不必进行下一步判断。
S23.判断当前访问进程号是否在步骤S1建立的对应关系表中并与索引节点匹配,如果是则进入正常系统调用流程,如果否则终止操作并返回错误码;所述访问进程号包括其自身进程号以及递归判断其父进程进程号所形成的合集,达到整个进程组访问控制的目的。
步骤S21-S23中所述错误码可以根据用户要求设置,包括但不限于EBUSY、EINVAL和EFAULT等。
S3.内核对访问内核空间的用户执行步骤S2所述访问权限控制判断,即执行步骤S21-S23,根据判断结果执行后续操作。
本发明的步骤S1和S2是对内核的修改操作,步骤S3是用户进入内核后的实际访问权限控制流程。进行传统DAC检查后对非重要文件直接放过进入正常系统调用流程,对重要文件进行索引节点和进程号的判断,不需要对每项操作都设置访问规则,达到轻量级访问权限控制的效果。
对于本领域的技术人员来说,可根据以上技术方案以及构思,做出其他各种相应的改变以及变形,而所有的这些改变和变形都应该属于本发明权利要求的保护范围之内。