我有一个自动化框架,它使用 Perl-CGI 在服务器上运行脚本。由于我们启用了 SELinux,当脚本尝试运行 bash 脚本时,我收到访问被拒绝错误。
以下是我在 audit.log 中找到的脚本错误日志
type=AVC msg=audit(1397170377.265:109255): avc: denied { execute } for pid=23776 comm="run_step.sh" name="step.sh" dev=sda1 ino=795126 scontext=system_u:system_r:httpd_sys_script_t:s0 tcontext=system_u:object_r:httpd_sys_rw_content_t:s0 tclass=file
type=AVC msg=audit(1397170377.265:109255): avc: denied { execute_no_trans } for pid=23776 comm="run_step.sh" path="/var/www/html/test/generated.5465/step.sh" dev=sda1 ino=795126 scontext=system_u:system_r:httpd_sys_script_t:s0 tcontext=system_u:object_r:httpd_sys_rw_content_t:s0 tclass=file
当我将 SELinux 设置为宽容模式时,我可以毫无错误地运行这些脚本。但是当它处于强制模式时,我就无法这样做了。
此外,我已为文件设置了 httpd 标签,但仍然出现这些错误。您知道如何解决吗?
答案1
查看 audit.log 消息,似乎某些文件的标签可能不正确。如果您尝试运行这些文件,那么我认为应该对它们进行标记,httpd_sys_script_t
而不是httpd_sys_rw_content_t
。