编辑:在我的情况下,virtual_use_local_privs = TRUE做的伎俩。
我试图强制newly created files and directories内的foo /目录为owned by nginx用户owned by nginx并设置正确的权限,以便nginx group users can execute and modify它们,如果需要的话。
整个事情是我刚才configurationvsftpd服务,其中我的virtual用户作为vsftpd user ,其中vsftpd是一个真正的用户没有壳。
login后,每个用户都被chrooted在user vsftpd和group nginx所拥有的目录中。 为了做到这一点,我创build了chroot目录:
mkdir chroot/
然后给予默认权限:
chown -R vsftpd:nginx chroot/
然后启用SGUID:
chmod -R g+s chroot/
就在这里,当一个vsftpd用户创build一个目录时,默认权限是vsftpd:nginx但是文件的默认权限是nginx:nginx ,这不是我想要的。
然后,因为我需要nginx用户组来运行和修改文件,如果需要我通过vsftpd config设置umask'0022',但我想我会以错误的方式。 任何人都可以指出我正确的方向?
先谢谢了!
编辑:
setfacl命令帮助了很多,但我仍然有与umask的问题。
我运行setfacl -R -md:u:vsftpd:rwx,d:g:nginx:rwx,d:m:rx,d:o::r chroot/其中getfacl chroot/ returns:
#owner:vsftpd #组:nginx #flags:-s- 用户:: RWX 组:: RWX 面具:: RWX 其他:: R-- 默认:用户:: RWX 默认值:user:vsftpd:rwx #ectivective:rx 默认:group :: rwx #ectivective:rx 默认:group:nginx:rwx #ectivective:rx 默认:面膜:: RX 默认:其他:: R--
但上传新文件会留下下列权限-rw-------+ 1 vsftpd nginx 25 feb 7 13:14 info.php
注意vsftpd.conf上的umask设置被设置为1002
我哪里错了? 非常感谢!
您可能必须使用acl来让用户始终设置为nginx。 你可以使用acl选项挂载文件系统,然后使用
setfacl -md:u:nginx:rwx,d:g:nginx:rw chroot
(或rw,如果你不需要可执行文件)。 然后,在dir中创build的所有文件都会有额外的权限,赋予nginx所有权(即使使用ls时显示的主所有者是不同的用户)。