目錄上的setgid位只能確保目錄內創建的文件也由擁有該目錄的組擁有。它不會影響授予該組的權限(中間的三位)。
你需要的是覆蓋默認的權限位的目錄中創建的文件,即:
setfacl -m default:user:www-data:rwx foobar/
在foobar的ACL訪問控制列表/應該是這樣的:
foobar% getfacl .
# file: .
# owner: www-data
# group: www-data
user::rwx
group::r-x
other::r-x
default:user::rwx
default:group::r-x
default:group:www-data:rwx
default:mask::rwx
default:other::r-x
如果你用限制性的umask創建文件...
foobar% umask
077
foobar% touch foo
foobar% ls -l
total 0
-rw-rw-r--+ 1 www-data www-data 0 Apr 2 11:18 foo
請注意,有+第一列的末尾,表示ACL存在,您應該使用getfacl查看完整圖片。
foobar% getfacl foo
# file: foo
# owner: www-data
# group: www-data
user::rw-
group::r-x #effective:r--
group:www-data:rwx #effective:rw-
mask::rw-
other::r--