编辑:就我而言,virtual_use_local_privs=TRUE 起了作用。
我试图强制newly created files and directories
foo/ 目录内部为用户,并在需要时owned by nginx
为他们设置正确的权限。nginx group users can execute and modify
整个事情是我刚刚配置了我的用户充当的vsftpd
服务,其中 vsftpd 是一个没有 shell 的真实用户。virtual
vsftpd user
登录后,每个用户都位于和chrooted
拥有的目录中。为了实现这一点,我创建了 chroot 目录:user vsftpd
group nginx
mkdir chroot/
然后赋予默认权限:
chown -R vsftpd:nginx chroot/
然后启用SGUID:
chmod -R g+s chroot/
就在这里,当 vsftpd 用户创建目录时,默认权限是,vsftpd:nginx
但文件的默认权限是,nginx:nginx
这不是我想要的。
然后,由于我需要nginx
用户组来运行和修改文件,因此我通过 vsftpd 配置设置了 umask“0022”,但我认为我走错了路。有人能给我指出正确的方向吗?
先谢谢了!
编辑:
该setfacl
命令有很大帮助,但我仍然遇到 umask 问题。
我运行setfacl -R -m d:u:vsftpd:rwx,d:g:nginx:rwx,d:m:rx,d:o::r chroot/
后getfacl chroot/
返回:
# 所有者: vsftpd # 组:nginx # 标志:-s- 用户::rwx 组::rwx 掩码::rwx 其他::r-- 默认值:用户::rwx 默认:用户:vsftpd:rwx #有效:rx 默认:组::rwx#有效:rx 默认:组:nginx:rwx#有效:rx 默认值:掩码::rx 默认:其他::r--
但上传新文件会保留以下权限-rw-------+ 1 vsftpd nginx 25 feb 7 13:14 info.php
注意 vsftpd.conf 上的 umask 设置设置为 1002
我哪里做错了?非常感谢!
答案1
您可能需要使用 acl 来让用户始终设置为 nginx。您可以使用 acl 选项挂载文件系统,然后使用
setfacl -m d:u:nginx:rwx,d:g:nginx:rw chroot
(或者如果不需要可执行文件,则为 rw)。然后,目录中创建的所有文件都将具有额外的权限,赋予 nginx 所有权(即使使用 ls 时显示的主要所有者是不同的用户)。