首页 理论教育 安全上下文的生成和变化在Linux内核安全模块中的探究

安全上下文的生成和变化在Linux内核安全模块中的探究

更新时间:2025-01-19 工作计划 版权反馈
【摘要】:有了安全上下文,有了操作,再加上7.3节要介绍的SELinux策略,系统管理员就可以规定安全上下文为A的进程可以对安全上下文为B的文件进行C操作。2)Linux系统中第一个进程的安全上下文是SECINITSID_KERNEL所对应的安全上下文。SELinux代码将所有的安全上下文存储在一个数组中,为了提高效率,SELinux代码用数组项的序号来代表安全上下文。进程SELinux提供了两种方式改变进程的安全上下文。

7.2.1节介绍了安全上下文,7.2.2节介绍了客体类别和客体上的操作。有了安全上下文,有了操作,再加上7.3节要介绍的SELinux策略,系统管理员就可以规定安全上下文为A的进程可以对安全上下文为B的文件进行C操作。这样就完成了SELinux的强制访问控制。

但是,主体和客体的安全上下文的值是怎么设置的?主体和客体的安全上下文能不能改变?如果能,可以改变成什么值?

1.安全上下文的初始值

进程的安全上下文的初始值有两个来源:

(1)创建进程时,子进程的安全上下文是父进程的安全上下文的副本。

2)Linux系统中第一个进程的安全上下文是SECINITSID_KERNEL所对应的安全上下文。

SELinux代码将所有的安全上下文存储在一个数组中,为了提高效率,SELinux代码用数组项的序号来代表安全上下文。这个序号被称作sid。上面代码中的SECINITSID_KERNEL就是一个sid。

cred_init_security函数被SELinux的初始化函数调用,它所设置的进程正是系统的第一个进程:

2.安全上下文的改变

不是所有的主体和客体都需要改变安全上下文,进程间通信类客体就没有必要改变安全上下文。下面列出改变进程和文件的安全上下文的逻辑。(www.xing528.com)

(1)进程

SELinux提供了两种方式改变进程的安全上下文。第一种方式是进程调用execve系统调用,第二种方式是通过写/proc/self/attr/current文件。这两种方式在前面已经列举。

(2)文件

文件的安全上下文记录在文件的扩展属性security.selinux中,修改扩展属性security.selinux的值就是修改文件的安全上下文。

上述代码判断的操作许可较多,主要的有三个:

1)文件的安全上下文不再是现在的值(RELABELFROM)。

2)文件的安全上下文可以是新的值(RELABELTO)。

3)文件所在的文件系统允许文件新的安全上下文(ASSOCIATE)。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈