
我应该是少数一直鼓励开着SELinux的人。
其实它跟chown chmod差不多玩法。
但是它真的能阻止一些小白程序员疯狂给服务器增加安全漏洞。
不熟悉Linux的人,破坏能力跟那些鼓励大家程序都装D盘的小白一样。
。
这玩意主要问题其实是产品提示性不够。
SELinux缺乏一个写得很有效的授权工具。
这玩意光顾着研究怎么拒绝读写去了……拒绝得确实非常专业。
但是,它忽略了该怎么让你很方便地进行授权……
实际上大部分情况下,你被SELinux搞了,就是因为文件放错了地儿,或者需要额外补个授权。
但,你不知道该补什么授权……
因为这个授权体系本身也是人为定的,所以从名字开始就不怎么讲人话。
比如,我的php程序要操作一个sqlite,这事太常见了。那么这个sqlite该放到哪里去呢?
该拥有什么内容角色呢?
第一个问题,可能有人还是知道的,放到/srv/<appname>下面(但这也只是一个流派),
第二个问题就很麻烦了,说实话我也不知道最正确的答案是啥……
我只知道代表可读写的web内容那个角色可以用httpd_sys_content_rw_t。
但你要注意,这套体系,它不是SELinux规定的,它是发行版规定的……
也就是说,你在不同的Linux发行版底下,得重新学习一套……
那基本就卸载了……
没有足够简单的man文档,谁能快速上手啊……
这个规定能覆盖大部分情况,但是某些很魔法的事情还是有问题。
比如,你要动态生成一个脚本并且运行它,怎么办?
你的WebServer和后台服务共用一个sqlite怎么办?
我有的时候一点小事都改用PostgreSQL就是因为不用改SELinux,dnf装完就行,方便。
。
SELinux还有个很蠢的地方在于,如果你们公司有个傻叉主动关闭了SELinux,并且对着系统关键文件系统读写,那可很容易完事……
下次启动,有很大概率SELinux导致启动失败,必须进single user界面拯救……
因为系统文件SELinux授权缺失……必须在重启前设置标志,让SELinux重新扫描和赋予一遍默认授权……
在公司里来这么一次之后,基本上大家的做法不是阻止那个傻叉关闭SELinux,而是阻止你打开SELinux。
