0 运行 Samba 4.7 服务器和 openLDAP 进行身份验证。多个 Windows 7/10 客户端连接并创建文件和文件夹。
我有以下问题:
1.) 如果 LDAP 用户john
在使用 SSH 连接到 sambaServer 时接触文件,则文件权限正确(执行位是没有设置对于文件):
john@sambaServer:/data/projects/general/john> touch testExecutePermission.dat
john@sambaServer:/data/projects/general/john> ll
total 0
-rw-rw-r--+ 1 john gast 0 Nov 30 18:44 testExecutePermission.dat
john@v:/data/projects/general/john>
2.) 假设用户 john 使用他的 Windows 资源管理器创建一个文件:
新文件是可执行文件对于所有者、群组和其他人:
john@sambaServer:/data/projects/general/john> ll
-rw-rw-r--+ 1 john gast 0 Nov 30 18:44 testExecutePermission.dat
-rwxrwxr-x+ 1 john gast 0 Nov 30 18:47 New Text Document.txt
来自 Samba 文档据我了解,samba 使用所有者、组和其他人的执行位来存储三个 DOS 属性(SYSTEM、HIDDEN、ARCHIVE)。
为了控制是否使用执行位,store dos attributes
可以使用该参数。如果我正确理解了此参数的用法,store dos attributes = yes
则其含义如下:
“尝试将 DOS 属性存储在 UNIX 文件系统的扩展属性中,而不是文件的执行位。”
因此我设置
store dos attributes = yes
并尝试了前后对比:/etc/samba/smb.conf
[global]
create mask = 0660
directory mask = 770
...
store dos attributes = yes
...
命令行中的结果得到脂肪命令:
`sambaServer:/data/ getfattr windowsFileStoreDosAttributes_no.txt`
`user.SAMBA_PAI`
`sambaServer:/data/ getfattr windowsFileStoreDosAttributes_yes.txt`
`user.DOSATTRIB`
`user.SAMBA_PAI`
3.1 好消息是,扩展 UNIX 文件系统属性user.DOSATTRIB
已设置。但文件仍可执行。
3.2 显然,如果设置了,参数map archive / readonly /h idden / system
就不会被使用。但我也尝试了所有设置它们的组合。store dos attributes
有人知道为什么执行位仍然设置吗?