我需要澄清/确认/阐述DAC,ACL和MAC在Linux文件安全性中扮演的不同角色。
经过文档研究后,这就是我对堆栈的理解:
- SELinux必须允许您访问文件对象。
- 如果该文件的访问控制列表(例如,
setfacl
,getfacl
用于ACL安装)显式地允许/拒绝访问的对象,那么就不需要进一步的处理。 - 否则,取决于文件的权限(rwxrwxrwx DAC模型)。
我想念什么吗?在某些情况下不是吗?
我需要澄清/确认/阐述DAC,ACL和MAC在Linux文件安全性中扮演的不同角色。
经过文档研究后,这就是我对堆栈的理解:
setfacl
,getfacl
用于ACL安装)显式地允许/拒绝访问的对象,那么就不需要进一步的处理。我想念什么吗?在某些情况下不是吗?
Answers:
当进程对文件执行操作时,Linux内核按以下顺序执行检查:
任意访问控制(DAC)或用户指定的访问控制。这包括经典的UNIX样式权限检查和POSIX访问控制列表(ACL)。传统的UNIX检查将当前进程的UID和GID与正在访问的文件的UID和GID进行比较,以了解已设置的模式(读/写/执行)。访问控制列表扩展了经典的UNIX检查,以允许有关权限控制的更多选项。
强制访问控制(MAC)或基于策略的访问控制。这是使用Linux安全模块(LSM)来实现的,这些模块不再是真正的模块(以前是,但已被删除)。除了传统的UNIX风格的安全性检查,它们还基于其他模型启用附加检查。所有这些模型都基于描述在哪种情况下针对哪个过程允许什么样的选择的政策。
这是一个i节点访问(包括文件访问)示例,以通过链接到在线Linux Cross Reference的链接来支持我的答案。给出的“ function_name
(文件名:行)”是针对Linux内核3.14版本的。
函数inode_permission
(fs / namei.c:449)首先检查文件系统本身的读取权限(sb_permission
在fs / namei.c:425中),然后调用__inode_permission
(fs / namei.c:394)检查读取/写入/执行do_inode_permission
(fs / namei.c:368)(DAC)中inode上的权限和POSIX ACL ,然后是security_inode_permission
(security / security.c:550)中与LSM相关的权限(MAC )。
此命令只有一个例外(DAC然后是MAC):用于mmap检查。但这已在3.15版本的Linux内核(相关的commit)中修复。
DAC
== Discretionary Access Control
,http://en.wikipedia.org/wiki/Discretionary_access_control
MAC
== Mandatory Access Control
,http://en.wikipedia.org/wiki/Mandatory_access_control
ACL
== Access Control List
,http://en.wikipedia.org/wiki/Access_control_list
用于ACL
指定要通过控制方法DAC
或进行应用的控件MAC
。 MAC
是显式的,集中控制的,并且除非有明确的权限,否则不允许用户向对象授予权限,而DAC
允许用户向其他用户授予对他们可以访问的对象的访问权限。
MAC
ACL
始终会首先将s应用于请求,如果访问被拒绝,则处理停止。如果允许访问,则DAC
ACL
应用,如果拒绝访问,则再次处理停止。只有当MAC
和都授予访问权限时DAC
ACL
,用户才能访问他们请求的对象。
SELinux
是MAC
Linux 的实现(还有其他实现),而传统的rwx
文件权限与拥有的用户和组结合在一起构成了完整的DAC
ACL
。该SELinux
“政策”在本质上是MAC
ACL
。
setfacl
)从哪里进入?
setacl
扩展了基本文件系统,ACL
以允许ACL
为文件和目录分配多个用户或组。这也是一种DAC
实现,因此在SELinux
MAC
ACL
s 之后应用。
setfacl
ACL会覆盖传统权限。在每种情况下都是这样吗?
setacl
/ setfacl
ACL
s将覆盖ACL
文件上传统的“简单” 。
setfacl
属于答案。
很抱歉,我想这里有些答案可能不正确。直接来自Fedora的http://docs.fedoraproject.org/en-US/Fedora/13/html/Security-Enhanced_Linux/sect-Security-Enhanced_Linux-Working_with_SELinux-SELinux_Contexts_Labeling_Files.html:
在DAC规则之后检查SELinux策略规则。如果DAC规则首先拒绝访问,则不使用SELinux策略规则。