FTP 用户无法读取 Web 服务器上传的内容

FTP 用户无法读取 Web 服务器上传的内容

我有一个www用户,其下运行网络服务器。

我还有一个ftp也属于该wheel组的用户。

问题是,无论通过 Web 服务器通过 http 上传什么文件,在用户运行后www,该文件都无法被该文件夹的所有者(即主文件夹)读取。

我应该做哪些改变来克服这个问题?

答案1

如果您运行的系统支持 ACL,则可以使用以下命令默认允许用户访问其主目录中的所有文件。我认为这比移动组更好:
setfacl -d -R -m user:ftpuser:rwx /home/ftpusers_home
setfacl -R -m user:ftpuser:rwx /home/ftpusers_home

然后他们应该能够读取、写入或执行其主目录中的任何文件。如果第一个命令因“错误使用”或类似命令而失败,您可能需要先运行此命令:
mount -o remount,acl /mount_point其中 mount_point 是 FTP 用户主目录所在的分区。如果您需要这样做,您还必须编辑 /etc/fstab 以使更改在重新启动后继续存在,如果您需要帮助,请告诉我们。

答案2

仅仅属于同一组(我会很慷慨地假设它不是轮子,因为那样就不好了)是不够的。

例如,如果 Web 服务器创建的文件的权限设置为“600”,则 ftp 用户位于正确的组中不会有帮助,因为该组没有读取该文件的权限。

即使权限足以允许组成员读取文件,您也需要确保设置了正确的组。如果 www-data 的主要组是 www-data,则文件最初将使用设置为 www-data 的组创建。您需要确保在 ftp 用户读取文件之前将其更改为共享组。

实现此目的的一种方法是将 Web 服务器保存文件的文件夹的组设置为共享组。然后,文件夹中创建的文件应将其组设置为共享组,而不是 www-data 的默认组。

答案3

我喜欢 acl 的想法,但是如果你做不到这一点,那么总是有一种强力方法,即设置一个 cronjob(可能由 root 运行),每隔几分钟运行一次并根据需要设置目录中文件的权限。虽然丑陋,但确实有效。

相关内容