对于从测试用户/var/www 目录中的帐户,我需要他们有加加减作为权限,以及www-数据作为团体。
我怎样才能实现这个目标?
我正在通过 SSH 创建文件。
答案1
要设置组,请/var/www
给出设置组ID少量:
chgrp www-data /var/www
chmod g+s /var/www
要调整子目录:find /var/www -type d -exec chmod g+s {} +
这将使所有新创建的文件继承父目录的组,而不是用户的组。
要设置默认组权限,您必须使用ACL. 设置“默认”ACL:
setfacl -m "default:group::rwx" /var/www
要调整子目录:find /var/www -type d -exec setfacl -m d:g::rwx {} +
注意:文件系统必须启用 ACL 支持。有时默认情况下启用;扩展或者ext4您可能会收到“操作不支持”的提示,在这种情况下必须手动启用它:
对于当前挂载的文件系统:
mount -o remount,acl /
永久 -一以下方法:
在 fstab 级别:编辑
/etc/fstab
选项acl
字段在文件系统级别:
tune2fs -o acl /dev/diskname
答案2
这可能会让一些人对 setgid 的“grawity”答案感到困惑,如果文件夹的组与您自己的组不同,您可能需要以 root 身份运行 chmod,但您不会收到任何表明您需要执行此操作的错误。
$ ls -ld dir
drwxrwxr-x 2 luke testgroup 4096 Mar 9 10:44 dir
$ chmod g+s dir #no errors
$ ls -ld dir
drwxrwxr-x 2 luke testgroup 4096 Mar 9 10:44 dir #but nothing changed
$ touch dir/nosudo && ls -l dir/
-rw-rw-r-- 1 luke luke 0 Mar 9 10:51 nosudo #and the group is still wrong
$ sudo chmod g+s dir
$ ls -ld dir
drwxrwsr-x 2 luke testgroup 4096 Mar 9 10:44 dir #the setgid bit is now on
$ touch dir/withsudo && ls -l dir/
-rw-rw-r-- 1 luke luke 0 Mar 9 10:51 nosudo
-rw-rw-r-- 1 luke testgroup 0 Mar 9 10:51 withsudo #and group is set
答案3
用户创建的文件所属的组为该用户的组(在 /etc/group 中)。权限由 UMASK 参数控制 看到这个