我正在使用 ACL 来为本地和 Samba 用户启用 rw 访问权限,并注意到组权限始终设置为 rwx。
这是在测试目录上设置的 ACL:
ubuntu@server:/test$ getfacl .
# file: .
# owner: samba
# group: samba
user::rwx
user:samba:rwx
user:ubuntu:rwx
group::rwx
mask::rwx
other::r-x
default:user::rwx
default:user:samba:rwx
default:user:ubuntu:rwx
default:group::rwx
default:mask::rwx
default:other::r-x
通过 Samba 创建的文件将导致-rw-rwxr--+
:
ubuntu@server:/test$ ls -l
total 0
-rw-rwxr--+ 1 samba samba 0 Feb 19 03:40 file1
为了隔离问题,我已create mask = 0000
设置smb.conf
:
/etc/samba/smb.conf:
[Share]
path = /test
browseable = yes
guest ok = yes
read only = no
map archive = no
create mask = 0000
ubuntu@server:/test$ sudo systemctl restart smbd.service
*Create file2 via Samba*
ubuntu@server:/test$ ls -l
total 0
-rw-rwxr--+ 1 samba samba 0 Feb 19 03:40 file1
----rwx---+ 1 samba samba 0 Feb 19 03:41 file2
我们可以通过在 samba 用户下创建一个文件来发现这不是 ACL 行为不当:
ubuntu@server:/test$ sudo -u samba touch file3
ubuntu@server:/test$ ls -l
total 0
-rw-rwxr--+ 1 samba samba 0 Feb 19 03:40 file1
----rwx---+ 1 samba samba 0 Feb 19 03:41 file2
-rw-rw-r--+ 1 samba samba 0 Feb 19 03:42 file3
所以我们可以在这里看到,samba 设置了 g+rwx。
禁用 ACL 后问题消失:
ubuntu@server:/test$ sudo setfacl -b /test
ubuntu@server:/test$ sudo getfacl .
# file: .
# owner: samba
# group: samba
user::rwx
group::rwx
other::r-x
*Create file4 via Samba*
ubuntu@server:/test$ ls -l
total 0
-rw-rwxr--+ 1 samba samba 0 Feb 19 03:40 file1
----rwx---+ 1 samba samba 0 Feb 19 03:41 file2
-rw-rw-r--+ 1 samba samba 0 Feb 19 03:42 file3
---------- 1 samba samba 0 Feb 19 03:43 file4
那么,如果激活 ACL,samba 将设置 g+rwx,这个结论正确吗?这是个错误,还是我遗漏了什么?
我仔细阅读了samba 文档并尝试了与权限相关的所有选项:创建掩码、强制创建模式、继承权限、映射存档、隐藏、只读、系统,但仍不知道还有什么原因导致这种情况。