安装acl

1
sudo apt-get -y install acl

把维护者用户user01加入到www-data组,www-data组为nginx运行身份www-data用户所属的组

1
sudo usermod -aG www-data user01

如果是新建目录

设置目录所属组为www-data

1
2
3
4
sudo chgrp www-data /srv/www/www.example.com

# or
sudo chown :www-data /srv/www/www.example.com

文件设置SGID位,文件会以文件所属的组的权限运行,而不是以执行者的组权限运行

目录设置SGID位,在该目录中创建的文件或子目录会自动继承该目录的组,而不是继承创建者的组,子目录也会继承SGID位,子文件不会继承SGID

组添加写权限(w),让www-data用户组有写权限,所以用户user01对/srv/www/www.example.com有写权限

组添加SGID位(s),所以/srv/www/www.example.com下创建的子目录或文件的属主组都属于www-data组

1
sudo chmod g+ws /srv/www/www.example.com

设置/srv/www/www.example.com目录的默认组ACL权限,此目录下新建的子目录或文件都会继承此ACL权限,文件不会继承执行权限(x),新建的文件是664,新建的目录是775

1
sudo setfacl -d -m g::rwx /srv/www/www.example.com  

如果是已存在目录

如果/srv/www/www.example.com目录下已经有文件或目录,添加ACL权限

1
2
3
4
sudo chgrp -R www-data /srv/www/www.example.com
sudo chmod -R g+w /srv/www/www.example.com
find /srv/www/www.example.com -type d -exec sudo chmod g+s {} \;
sudo setfacl -R -d -m g::rwx /srv/www/www.example.com

参考链接:

https://linux.die.net/man/1/setfacl

https://askubuntu.com/questions/979616/set-default-acl-for-new-files-and-directories