linux权限管理不仅包含基础的rwx权限,还涉及umask设置、目录setgid位和selinux等机制;1. umask通过“屏蔽”默认权限影响新文件或目录的最终权限;2. 目录setgid位使新创建的文件或子目录继承父目录所属组;3. selinux作为强制访问控制(mac)机制,基于安全上下文标签和策略规则限制访问,与传统dac互补;4. lsm框架支持多种安全模块如selinux、apparmor等,提供内核级安全扩展能力;5. selinux故障排查可通过切换至permissive模式、分析audit.log日志及使用sealert、audit2allow等工具生成自定义策略解决。

Linux系统的权限管理,远不止我们平时接触的
rwx

Linux权限继承与SELinux安全策略_Linux安全模块详细讲解
Linux的权限继承主要体现在两个方面:文件创建时的
umask
setgid
umask
umask

我刚开始接触Linux的时候,
umask
umask
umask
0022
644
rw-r--r--
755
rwxr-xr-x
umask
举个例子,如果我想让我在某个目录下创建的所有文件,其所属组都能有写权限,并且新创建的子目录也能继承父目录的组,那我就得动用目录的
setgid
/data/shared

mkdir /data/shared chgrp project_group /data/shared chmod g+s /data/shared
这样一来,任何在这个
/data/shared
project_group
setgid
说实话,SELinux这玩意儿,初学者往往望而却步,因为它太“严格”了,动不动就报
Permission denied
传统的文件权限(
rwx
而SELinux则是强制访问控制(MAC)。它不看用户是谁,而是看“安全上下文”。每个文件、每个进程,甚至每个网络端口,都有一个安全上下文,比如
system_u:object_r:httpd_sys_content_t:s0
httpd_t
httpd_sys_content_t
这就好比,你家大门钥匙在你手上,但社区还有个规定,你家的大门只能由穿特定制服(比如“快递员制服”)的人打开,其他人即使有钥匙也不行。SELinux就是那个社区规定。
你可以通过
ls -Z
ls -Z /var/www/html/index.html
当服务无法启动或出现奇怪的权限问题时,往往需要检查SELinux的状态(
getenforce
/var/log/audit/audit.log
chcon
你可能会想,既然有了SELinux,为什么还要LSM这个框架呢?LSM(Linux Security Modules)的出现,其实是为了让Linux内核能够支持多种安全模型,而不仅仅是SELinux一种。它提供了一套通用的钩子(hooks),这些钩子遍布内核的各个关键点,比如文件打开、进程创建、网络连接等等。当一个操作发生时,内核会调用这些钩子,注册到LSM框架中的安全模块就可以在这里插入自己的逻辑,进行权限检查。
这就像一个开放的插件架构。SELinux就是其中一个非常强大的插件,它实现了MAC模型。除了SELinux,还有AppArmor、SMACK等其他的安全模块,它们也通过LSM框架来增强Linux的安全性。这种设计的好处是,内核本身不需要知道具体的安全模型是什么,它只提供一个统一的接口,让安全专家可以开发和部署各种复杂的安全策略,而不需要修改内核核心代码。
对我个人而言,LSM框架的意义在于它的灵活性和可扩展性。它允许不同的发行版、不同的企业根据自身需求,选择或开发最适合他们的安全策略。这避免了将所有安全逻辑都硬编码进内核,导致内核臃肿且难以维护。
实际工作中,SELinux最让人头疼的,可能就是服务跑不起来,日志里又一堆
deny
首先,检查系统是否处于
enforcing
getenforce
permissive
setenforce 0
permissive
最重要的工具是
audit.log
sealert
setroubleshoot-server
audit.log
AVC denied
sealert
# 安装sealert工具 sudo yum install setroubleshoot-server -y # CentOS/RHEL sudo apt install setroubleshoot-server -y # Debian/Ubuntu # 查看最近的SELinux拒绝事件 sudo sealert -a /var/log/audit/audit.log
如果
sealert
audit2allow -a -M mypolicy
# 示例:根据审计日志生成并安装策略模块 grep "AVC denied" /var/log/audit/audit.log | audit2allow -M mywebserver sudo semodule -i mywebserver.pp
这套流程走下来,虽然有点繁琐,但它能让你在不禁用SELinux的前提下,精准地解决问题。它体现了SELinux的精髓:最小权限原则——只允许必要的访问,而不是一刀切地开放。当然,这要求你对服务的工作原理、文件路径等有清晰的认识。
以上就是Linux权限继承与SELinux安全策略_Linux安全模块详细讲解的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号