自主访问控制机制是操作系统安全的重要组成部分,允许系统的用户对属于自己的客体,按照自己的意愿,允许或禁止其他用户访问。
- 自主访问控制简介
自主访问控制的主体可以按自己的意愿决定哪些用户可以访问他们的资源,亦即主体有自主的决定权,一个主体可以有选择地与其他主体共享他的资源。基于访问控制矩阵的访问控制表(ACL)是自主访问控制中通常采用的一种安全机制。ACL是带有访问权限的矩阵,这些访问权是授予主体访问某一客体的。安全管理员通过维护ACL控制用户访问数据,对每一个受保护的资源,ACL对应一个个人用户列表或由个人用户构成的组列表,表中规定了相应的访问模式。
- umask
umask也是进行自主访问控制的一种重要手段。当创建一个新的客体时,客体初始访问控制信息对系统的安全尤为重要。通常会采取一些限制或者去掉一部分权限,比如新创建的文本文件,它就不应当有执行的权限。通过设置适当的umask可以屏蔽一部分不必要的权限。
一般来说,umask命令是在/etc/profile文件中设置的,每个用户在登录时都会引用这个文件,所以如果希望改变所有用户的umask,可以在该文件中加入相应的条目。如果希望永久性地设置自己的umask值,那么就把它放在自己$HOME目录下的.profile或.bash_profile文件中。
umask命令允许您设定文件创建时的缺省模式,对应每一类用户(文件属主、同组用户、其他用户)存在一个相应的umask值中的数字。对于文件来说,这一数字的最大值分别是6。系统不允许您在创建一个文本文件时就赋予它执行权限,必须在创建后用chmod命令增加这一权限。目录则允许设置执行权限,这样针对目录来说,umask中各个数字最大可以到7。其使用方法有点类似于网络上的子网掩码的作用,不同的是网络上的子网掩码是与ip地址进行与运算,而umask后面所带的数和最大的权限值进行的是异或运算。例如,umask值002 所对应的文件和目录创建缺省权限分别为664和775。
umask命令的格式:#umask newmask。
- Default ACL
Default ACL是专用于目录客体的一种访问控制列表,它不直接应用于访问控制仲裁,而是用于该目录下新创建客体的初始化。如果一个目录有Default ACL,那么在目录下新创建的文件、子目录都会继承这个Default ACL。因此,Default ACL是实现自主访问控制在系统中应用的关键。
setfacl命令的一般用法是:
setfacl [option] {option}[arguments]…
setfacl命令有以下几个主要的参数:
-m: | 修改参数给出的文件的当前ACL。 |
---|---|
-M: | 由文件读取ACL入口点来修改。 |
-x: | 移除参数给出的文件的ACL入口点。 |
-X: | 从文件读取ACL入口点来移除。 |
-b: | 移除所有外部的ACL入口点。 |
-k: | 移除默认的ACL。 |
-n: | 不重新计算有效的mask。 |
-d: | 按照默认的ACL进行操作。 |
-R: | 递归影响子目录。 |