#一.常见的读取控制机制
1.DAC(Discretionary Access Control ):任意读取控制
在此机制下,每一个对像都会记录一个拥有者的信息,只要是对象的拥有者,就可以获得对该对象的完全控制。
传统的UNIX系统提供的安全机制就是DAC思维。
2.MAC(Mandatory Access Control):强制读取控制
在MAC机制下,会为每一个对象增添一个‘安全脉络’的信息,进程或用户除了具备传统权限外,还必须得到授权,方能
读取指定的对象。在MAC机制下包括:RBAC,MLS
RBAC(Role-based Access Control):基于角色的读取控制,这有点像数据库的角色。
MLS(Multi-level Security):多层次的安全,以数据内容的精密性和敏感性定义不同级别。比如在国家机密中,有普通,机密,绝对机密等。
#二.SELinux与chroot的对比
SELinux提供了类似chroot的效果:都只能读取指定空间的对象,非该空间的对象不可读取。
但SELinux明显优于chroot。因为chroot只能用来修改进程的根目录,无法限制进程的其它能力,而SELinux除了可以控制读取文件外,
还可以限制对其它设备的读取能力,提供更加细微的读取控制。而且SELinux是在传统的DAC之后执行的,也就是说要想读取必须过两道关。
#三.SELinux初始化
当BootLoader加载内核后,启动init,init会执行下列操作
(1)init会先挂载procfs,然后寻找Linux内核是否提供selinuxfs文件系统,如果是,则表示目前Linux内核支持SELinux的功能。如果不支持,进行其它初始化计划
(2)init根据/etc/sysconfig/selinux 中的SELINUX参数或selinux内核启动参数,来决定是否启用SELinux。如果SELinux参数是disabled,则init服务会跳过初始化SELinux
(3)如果需要启动,则init会将SELinux状态设置为permissive。接着会根据/etc/sysconfig/selinux 的SELINUX的参数或enforcing这个内核启动参数来决定是否要切换为强制模式。如果enforcing的值不为0或SELINUX参数定义为enforcing,则切换为强制模式
(4)完成上述后