配置 vsftpd 以 chown 上传文件

use*_*770 5 permissions ftp vsftpd

我在我的 Ubuntu 服务器上启动并运行了 vsftpd。这是一个开发服务器,我希望能够将我的代码直接通过 FTP 传输到 Apache 提供的目录。

大多数人都知道,www-data 是 Apache 用户,而 www-data 用户需要对 Apache 提供的目录具有权限。

我不想让 www-data 也成为 FTP 用户,所以我所做的是创建另一个用于 FTP 的用户,并将 www-data 和新用户放在一个名为 www 的新组中。

我对chown -R www-data:www *Apache 正在服务的目录做了一个,它工作得很好。

当我通过 FTP 上传该目录中以前不存在的文件时,问题就出现了。所有者设置为我的 FTP 用户。我希望在上传新文件时将所有者设置为 www-data,并将组设置为 www。

有没有办法用 vsftpd 做到这一点?

我已经疯狂地谷歌搜索了几个小时,但我找不到办法做到这一点。任何帮助将不胜感激。

编辑:

我只是设置了几个 cron 作业每分钟运行一次并设置权限:

*/1 * * * * chown -R www-data:www /var/www

*/1 * * * * chmod -R g+rw /var/www

它可以工作,但有点笨拙,当我在浏览器中按 F5 时,我上传新代码和让它工作之间有大约 1 分钟的延迟。

wal*_*tor -1

阅读man 2 chmod,尤其是下面的部分:

   S_ISGID  (02000)  set-group-ID (set process effective group ID on execve(2); mandatory locking, as described in  fcntl(2);  take  a
                     new file's group from parent directory, as described in chown(2) and mkdir(2))
Run Code Online (Sandbox Code Playgroud)

您可能可以使用它来使在组中的目录中创建的所有文件www,并将您的网络服务器的umask值更改为022

为了安全地执行此操作,请阅读并重读man 2 chmodman 2 open以及“另请参阅:”man 2 stat部分中指出的任何内容。了解 Linux 如何处理文件和目录权限以获得乐趣和/或利润!

或者,您可以安装inoticoming - trigger actions when files hit an incoming directory,并在文件命中时执行您的操作。