1.9. 设置使用 Windows ACL 的共享
Samba 支持在共享和文件系统对象中设置 Windows ACL。这可让您:
- 使用精细 Windows ACL
- 使用 Windows 管理共享权限和文件系统 ACL
或者,您可以将共享配置为使用 POSIX ACL。详情请参阅 设置使用 POSIX ACL 的 Samba 文件共享。
这个部分的内容基于 Samba Wiki 中发布的 Setting up a Share Using Windows ACLs 文档。许可证: CC BY 4.0。作者和贡献者:请参阅 Wiki 页面上的历史选项卡。
1.9.1. 授予 SeDiskOperatorPrivilege 特权 复制链接链接已复制到粘贴板!
只有被赋予了 SeDiskOperatorPrivilege
特权的用户和组才能对使用了 Windows ACL 的共享配置权限。
流程
例如,要对
DOMAIN\Domain Admins
组赋予SeDiskOperatorPrivilege
特权:net rpc rights grant "DOMAIN\Domain Admins" SeDiskOperatorPrivilege -U "DOMAIN\administrator"
# net rpc rights grant "DOMAIN\Domain Admins" SeDiskOperatorPrivilege -U "DOMAIN\administrator" Enter DOMAIN\administrator's password: Successfully granted rights.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意在域环境中,对域组赋予
SeDiskOperatorPrivilege
。这可让您通过更新用户的组成员资格来集中管理权限。列出所有被赋予了
SeDiskOperatorPrivilege
的用户和组:net rpc rights list privileges SeDiskOperatorPrivilege -U "DOMAIN\administrator"
# net rpc rights list privileges SeDiskOperatorPrivilege -U "DOMAIN\administrator" Enter administrator's password: SeDiskOperatorPrivilege: BUILTIN\Administrators DOMAIN\Domain Admins
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.9.2. 启用 Windows ACL 支持 复制链接链接已复制到粘贴板!
要配置支持 Windows ACL 的共享,您必须在 Samba 中启用此功能。
先决条件
- 在 Samba 服务器中配置了一个用户共享。
流程
要对所有共享全局启用它,请在
/etc/samba/smb.conf
文件的[global]
部分中添加以下设置:vfs objects = acl_xattr map acl inherit = yes store dos attributes = yes
vfs objects = acl_xattr map acl inherit = yes store dos attributes = yes
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 或者,您可以通过将相同的参数添加到共享部分来启用对单个共享的 Windows ACL 支持。
重启
smb
服务:systemctl restart smb
# systemctl restart smb
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.9.3. 添加使用 Windows ACL 的共享 复制链接链接已复制到粘贴板!
您可以创建一个名为 example
的共享,其共享 /srv/samba/example/
目录的内容,并使用 Windows ACL 。
流程
如果不存在,请创建文件夹。例如:
mkdir -p /srv/samba/example/
# mkdir -p /srv/samba/example/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果您在
enforcing
模式下运行 SELinux,请在目录中设置samba_share_t
上下文:semanage fcontext -a -t samba_share_t "/srv/samba/example(/.)?"* restorecon -Rv /srv/samba/example/
# semanage fcontext -a -t samba_share_t "/srv/samba/example(/.)?"* # restorecon -Rv /srv/samba/example/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将共享示例添加到
/etc/samba/smb.conf
文件中。例如,添加启用了共享的写操作:[example] path = /srv/samba/example/ read only = no
[example] path = /srv/samba/example/ read only = no
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意无论文件系统 ACL 是什么;如果您没有设置
read only = no
,Samba 会以只读模式共享该目录。如果您没有在
[global]
部分中对所有共享启用 Windows ACL 支持,那么请在[example]
部分中添加以下参数来为这个共享启用此特性:vfs objects = acl_xattr map acl inherit = yes store dos attributes = yes
vfs objects = acl_xattr map acl inherit = yes store dos attributes = yes
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 验证
/etc/samba/smb.conf
文件:testparm
# testparm
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 打开所需的端口,并使用
firewall-cmd
工具重新加载防火墙配置:firewall-cmd --permanent --add-service=samba firewall-cmd --reload
# firewall-cmd --permanent --add-service=samba # firewall-cmd --reload
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重启
smb
服务:systemctl restart smb
# systemctl restart smb
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.9.4. 管理使用 Windows ACL 的共享的共享权限和文件系统 ACL 复制链接链接已复制到粘贴板!
要在使用 Windows ACL 的 Samba 共享上管理共享权限和文件系统 ACL,请使用 Windows 应用程序,如 计算机管理
。详情请查看 Windows 文档。或者,使用 smbcacls
工具来管理 ACL。
要从 Windows 修改文件系统权限,您必须使用赋予了 SeDiskOperatorPrivilege
特权的帐户。