我们公司有一个装有 CentOS 7 的网络服务器,我们的客户通过 FTP (vsftpd) 管理他们的网站。SELinux 处于强制模式。
问题是通过 VSFTPD 创建/上传的数据没有继承适当的 SELinux 上下文。让我解释。
例如,对于 WordPress 站点,服务器开箱即用,已经有几个可以使用 看到的规则semanage fcontext -l |grep '/var/www',它们是:
/var/www/html(/.*)?/uploads(/.*)? all files system_u:object_r:httpd_sys_rw_content_t:s0
/var/www/html(/.*)?/wp-content(/.*)? all files system_u:object_r:httpd_sys_rw_content_t:s0
Run Code Online (Sandbox Code Playgroud)
因此,当我/var/www/html/通过 SSH从另一台服务器复制一个 WordPress 站点时,文件夹wp-content/并wp-content/uploads/具有适当的httpd_sys_rw_content_t安全上下文。但是,当通过 FTP 创建这些文件夹时,它们获得的上下文是httpd_sys_content_t(no rw )。这意味着即使我们的客户向 apache 用户/组授予写权限,我们的客户上传到服务器的站点也无法写入这些目录,因此 WordPress 管理员不起作用。因此,当他们上传网站时,他们必须请求我们的支持来解决这个问题,这对所有相关人员来说都是浪费时间。
假设客户将他们的网站上传到httpdocs,如果我通过 SSHmv httpdocs/ httpdocs.2/ && cp -pr httpdocs.2/ httpdocs/ && rm httpdocs.2/ -fr来解决问题,那么数据没有任何问题。
我也可以restorecon -Rv httpdocs/解决问题。
所以,问题是:如何让通过 VSFTPD 创建/上传的目录继承正确的 SELinux 上下文,就像通过 …