跳转至主要内容
晴雨技术笔记

SELinux

杏川铭心 杏川铭心
发表于 2025年12月5日
  • 本文最后编辑于 210 天前,部分信息可能已过时,请注意甄别。
  • 连续写了三篇 Windows 管你员指南……啊不是,管理员指南,实在是需要一个缓冲,所以特意写这一篇纯纯的水文,这样我就有时间休息了(才不会告诉你其实我都是定时发布!这破文章我一个月前就写好了哈哈哈哈~话说这就是先努力一把积攒财富然后直接什么都不干把东西全部挥霍掉嘛)

    什么是 SELinux

    SELinux 最早是由美国国家安全局 NSA 开发的一个 Linux 内核模块(惊不惊喜意不意外),相较于传统的 Linux 权限控制,SELinux 不关注文件的权限,更加关注程序和服务本身的权限:即一个程序是否理应有访问某个文件的权限。

    例如各类 Web 服务器,他们当然就只能访问自身的配置文件和 Web 内容,拿 nginx 举例,那就是 /etc/nginx 目录下的内容,还有 Web 文件,比如 /var/www 下的内容。这种情况下,就算发生灾难,导致你的 nginx 被破解,攻击者拿到了 root,也没有任何问题,因为在 SELinux 的作用下,哪怕你有了 nginx 的 root,也没有办法去读诸如 /etc/shadow 等重要的系统文件!

    配置 SELinux

    运行模式

    SELinux 一共有三种运行模式,分别是 Disabled,Permissive,和 Enforcing。

    Disabled 顾名思义,代表 SELinux 完全不工作。

    Permissive 代表 SELinux 会检查安全上下文,但不会真的阻止操作,只是会留下一条记录。

    其中 Permissive 和 Enforcing 可以在运行时通过命令切换:

    sudo setenforce <0|1>

    其中 1 代表 Enforcing,0 代表 Permissive。

    Disabled 的话就只能通过先修改配置文件再重启了。把 /etc/selinux/config 中的 SELINUX= 一行改成:

    SELINUX=Disabled

    然后重启就是 Disabled 了。

    安全上下文

    可以使用 ls 来查看安全上下文:

    ls -Z

    其中 -Z 就是列出安全上下文的参数。

    如果要修改上下文的话则需要使用 chcon:

    sudo chcon [参数] [-u] [用户] [-r] [角色] [-t] [类型] [-l] [范围] [目标路径]

    常用的参数和 chmod、chown 一类的命令是一致的。

    检查错误

    检查日志中由 setroubleshoot 产生的行,然后输入对应的 sealert 命令就可以查看具体是什么地方出错了:

    sealert <GUID>

    这里由于我写文章的时候 SELinux 已经被我关了有 100 年了因此就不放例子了(好不负责任啊……)

    最后为什么有一个 AlmaLinux 的标签呢,因为我本地有一个 AlmaLinux 虚拟机正好是我唯一一个装了 SELinux 的虚拟机,虽然被我关了但总归是这个系统给了我灵感所以就写上啦~

    • 特别提醒:

      评论看到就会回,但是不保证速度,有的时候站长忘记看的话就会出现审核好几天也没有动静的情况……

      有垃圾评论检查,如果评论之后直接消失、没反应说明被识别为垃圾评论了。

      如果等不及的话,可以加群!

    杏川铭心
    杏川铭心

    群号:1101838302,欢迎友好交流 :P 曾用名Frank419(现在也是我在很多地方的用户名),网站站长。

    发表回复

    您的邮箱地址不会被公开。 必填项已用 * 标注