我在 CentOS 服务器上运行了一个 Zend Web 应用程序,SELinux 以宽容模式运行(即记录访问控制决策/var/log/audit/audit.log
但不强制执行)。该应用程序允许人们上传文件,这些文件保存在外部的目录结构中htdocs
(例如/var/acme/myapp/files
)。该应用程序需要写入和删除该目录中的文件,以及创建、修改和删除该目录下的目录。
FWIW,httpd 以 启动root
,然后作为名为 的单独用户生成进程apache
。
我想将 SELinux 置于强制模式,但仍严格允许 Zend 应用程序执行上述 IO 操作。我还希望这些 SELinux 设置在重启后仍然有效。我该怎么做?
答案1
您需要重新标记该文件夹以使 httpd 可以写入。
如果 http 是唯一可以写入它的东西(比如 ftp 或 ssh),那么这应该可以工作。
semanage fcontext -a -t httpd_sys_rw_content_t '/var/acme/myapp/files(/.*)?'
fixfiles restore /var/acme/myapp/files
然后尝试写入文件夹,它应该可以工作。