我有一个 Web 服务器,我正在使用 FTP 客户端上传文件。因此,文件的所有者和组取自上传时使用的用户。
现在我必须让这个文件可被 Web 服务器(apache/apache)写入。
一种方法是将上传文件的所有者和组更改为 apache/apache,但这样我就无法使用 FTP 帐户修改文件。另一种方法是授予文件 777 权限。
这两种方法似乎都不太专业,而且有点冒险。还有其他选择吗?在 Windows 中,我只需将另一个用户添加到文件中即可。在 Linux 上可以做类似的事情吗?
答案1
您可以更改文件的组:
groupadd webusers
usermod -aG webusers the_user_name
chgrp -R webusers the_directory
chmod g+s the_directory
如果这是基于 RedHat 的发行版,您可以使用 setfacl 来执行此操作而无需组并将其设置为默认发生:
setfacl -R -m user:the_username:rwx directory_name
setfacl -d -R -m user:the_username:rwx directory_name
答案2
允许一组用户维护一组文件是一回事:您只需将它们添加到一个公共组并将现有文件和目录的所有权设置为该组,然后在任何目录上设置粘性组位(随后文件应默认添加为该组可写入)。
现在我必须让这个文件可以被网络服务器写入
您需要非常小心谨慎地选择哪些文件可供 Web 服务器写入,以避免代码注入问题 - 不要将 Web 服务器的 uid 添加到上面定义的用户组 - 将这些文件与网站上的其他内容完全分开(即放在单独的目录中,并禁用所有 cgi / php 等),最好完全在文档根目录之外。大多数 FTP 服务器允许您设置上传权限(文件为 0666,目录为 0777)和/或在目录上设置其他粘性位。
C。
答案3
要使 setfacl 正常工作,必须使用“acl”选项挂载分区