我知道我对 SElinux 有疑问。我也是遵循教程这将帮助我了解我遇到的文件访问问题的本质。也就是说,我仍然可以让 SElinux 强制执行,就像禁用它一样。
基本上,我已将 SElinux 设置为宽容模式以进行测试,并执行了一个在强制执行时会失败的文件操作。这样我就能看到日志中的消息是什么样的。这样的一行看起来像这样:
type=USER_CMD msg=audit(1452912989.069:324790): pid=66581 uid=1001 auid=1001 ses=1352 subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 msg='cwd="/srv/dpca/www" cmd=7461696C202F7661722F6C6F672F61756469742F61756469742E6C6F67 terminal=pts/0 res=success'
现在既然我是真的对此我很陌生,我参考了该教程以及它如何谈论如何audit2why
为我布置这一点。
[matt@localhost www]$ sudo grep 1452912989.069:324790 /var/log/audit/audit.log | audit2why
Nothing to do
确实grep
返回正确的文本。然而audit2why
似乎正在返回“无事可做”。
我做错了什么根本性的事情吗?一天结束时,我试图找出要分配给某些 NGINX 目录的上下文。我确信我可以查找它们,但我也想理解我正在做的事情应该只是运行我在互联网上看到的命令。
如果您好奇,这是我的网络根目录上下文的一小段
drwxr-xr-x. nginx nginx unconfined_u:object_r:httpd_sys_content_t:s0 administrator
drwxr-xr-x. nginx nginx unconfined_u:object_r:httpd_sys_content_t:s0 bin
drwxr-xr-x. nginx nginx unconfined_u:object_r:httpd_sys_content_t:s0 cache
答案1
笔记:我仍然对我的问题的答案感兴趣,但我确实想发布一个我正在使用的解决方法,如果它按照audit2why
我预期的方式工作,它会提供同样有用的信息。
在下面CentOS.org 上的 SELinux 指南有一个故障排除部分。其中讨论了如何使用sealert
从日志“/var/log/audit/audit.log”中解析出的人类可读信息。所以简单地运行
sudo sealert -a /var/log/audit/audit.log > ~/logfile.txt
允许我阅读我想要的信息并获得有关我的 Web 目录的正确安全上下文的建议。
SELinux is preventing /usr/sbin/php-fpm from write access on the directory /srv/dpca/www/images.
***** Plugin httpd_write_content (92.2 confidence) suggests ***************
If you want to allow php-fpm to have write access on the images directory
Then you need to change the label on '/srv/dpca/www/images'
Do
# semanage fcontext -a -t httpd_sys_rw_content_t '/srv/dpca/www/images'
# restorecon -v '/srv/dpca/www/images'
再说一遍,如果有人知道我最初的问题,audit2why
我仍然想知道。
答案2
/var/log/audit/audit.log 是一个二进制文件。您可以使用 grep 查找内容
grep -a AVC /var/log/audit/audit.log | audit2why