配置 vsftpd 来 chown 上传的文件

配置 vsftpd 来 chown 上传的文件

我的 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 来做到这一点?

我已经疯狂地在 Google 上搜索了好几个小时,但还是找不到办法。如能得到任何帮助我将不胜感激。

编辑:

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

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

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

它可以工作,但是有点笨重,当我在浏览器中按下 F5 键时,从我上传新代码到它工作大约有 1 分钟的延迟。

答案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))

您可能可以使用此功能使目录中创建的所有文件都属于该www组,然后将 Web 服务器的umask值更改为022

为了安全地执行此操作,请反复阅读man 2 chmodman 2 open以及man 2 stat也可以看看:部分。了解 Linux 如何处理文件和目录权限以获得乐趣和/或收益!

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

相关内容