我已经运行了一个 vsftp 服务器。以下是我想要做的事情:
2 名开发人员通过 ftp 客户端获得对 Web 目录的访问权限。他们编写所需的文件。然后刷新页面 (F5),Web 服务器将向他们提供新页面。
这是我所做的:
- 创建一个组(将其命名为
全接入组
)。 - 创造
用户1
属于这个组,用户2
也属于这一组 - 创建目录
/var/www/新网站
chgrp allaccessgroup /var/www/newsite
chown apache /var/www/newsite
chmod 570 /var/www/newsite
这样:apache 就可以读取,并且仅有的读取 php 文件,所有用户 1 和用户 2 都被赋予执行他们想要做的事情的权限。
问题是我想让 user1 和 user2 上传他们的文件。上传时文件权限为 allaccessgroup/user1 或 allaccessgroup/user2,而我想要的是 allaccessgroup/apache 权限。
我正在寻找一种方法,在文件上传后立即自动更改所有权。我读过一些类似这样的内容:创建一个 php 文件,然后在上传完成后调用:
$complete = $complete.exec("ssh root@host -i /path/to/pulic/key chmod 0700 /Users/".$shortname."/Private/\n");
我不喜欢调用“exec”,这意味着授予“exec”对 php 的访问权限...欢迎任何其他想法!
顺便一提 :
我一直在查看 vsftp 配置文件:
chown_uploads=YES chown_username=apache
但这适用于上传的匿名文件归其他用户所有,而不是特定用户所有
欢迎提出任何其他想法!
谢谢 !
答案1
看看本地掩码vsftpd.conf 中的指令
答案2
另一个选择是查看粘性位,看看两者是否属于同一组,但该组不是它们的主要组。 chmod g+s /var/www/newsite 这样,目录中创建的所有新文件都将拥有父级的组所有权。虽然还没有检查子目录,但你可以测试一下。
答案3
文件打开模式= 上传文件创建时的权限。umask 应用于此值之上。如果您希望上传的文件可执行,则可能需要更改为 0777。
Default: 0666
答案4
这稍微有点题外,但 VSFTP 附带启用了匿名用户的功能,供您了解。
http://www.standalone-sysadmin.com/blog/2008/11/default-vsftpd-on-centos-is-dumb/
如果您还没有测试过的话,只是想让您知道。