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 chmod、man 2 open以及“另请参阅:”man 2 stat部分中指出的任何内容。了解 Linux 如何处理文件和目录权限以获得乐趣和/或利润!
或者,您可以安装inoticoming - trigger actions when files hit an incoming directory,并在文件命中时执行您的操作。