我的情况:
客户端 (Windows 10) -> 服务器 (Debian 10 / Samba 版本 4.9.5-Debian) -> NAS (Lenovo ix2)
从客户端(Windows 10),我可以毫无问题地创建、重命名、删除、更改文件和文件夹,但无法检索 DOS/Windows 文件属性信息(读写、隐藏、系统)或设置它!
Windows 10 启用了 SMBv1
服务器Debian从8更新到10.10(新硬件机器,全新安装,从头开始); 8.0版本不存在这个问题。
服务器挂载 - 通过
fstab
,但与提示相同 - NAS 共享://NAS/STORAGE /mnt/STORAGE cifs username=...,password=...,rw,dir_mode=0777,file_mode=0666,uid=...,gid=...,noauto,noserverino,nounix,vers=1.0
我已经尝试过
vers=2.0
,,vers=3.0
和许多其他...并省略选项,但什么也没有服务器(Debian 10)挂载(在“/mnt”路径子文件夹上)许多其他Windows共享(Window 10、Windows 7、Windows NT 4.0),我没有任何问题,只有在NAS(Lenovo ix2)上无法正常工作。
smb.conf
:[global] workgroup = WORKGROUP # *** I have tried many parameter for protocol: #client min protocol = SMB2 #server min protocol = SMB2 #client max protocol = NT1 #server max protocol = NT1 #max protocol = NT1 interfaces = 127.0.0.0/8 enp11s0f0 enp11s0f1 10.9.8.1 bind interfaces only = yes log file = /var/log/samba/log.%m max log size = 1000 server role = standalone server netbios name = PIGRECO server string = Distributed File Server - Samba %v (%h) interfaces = lo enp11s0f0 enp11s0f1 local master = yes domain master = yes preferred master = yes os level = 35 encrypt passwords = yes smb passwd file = /etc/samba/smbpasswd guest account = studio ldap ssl = no client lanman auth = yes client plaintext auth = yes wins support = yes dfree command = /usr/local/bin/dfree [COMMON] comment = Common PIGRECO Archive path = /mnt force user = studio read only = No create mask = 0777 directory mask = 0777 guest ok = Yes hosts allow = 192.168.0. 172.0.0. 10.9.8. strict locking = No browsable = Yes # The "ea support" set to "no" don't solve the problem: #ea support = no vfs objects = recycle recycle:repository = /mnt/STORAGE/Trash recycle:keeptree = Yes recycle:versions = Yes recycle:maxsize = 104857600
我尝试过 CIFS 调试(使用
echo 7 > /proc/fs/cifs/cifsFYI
)并收到此错误:Status code returned 0xc000004f NT_STATUS_EAS_NOT_SUPPORTED
但我在网上找不到任何信息。
我
/mnt
为 NAS 创建了新的子文件夹,就像其他文件夹(权限和所有者)一样,但当我更改 linux attrib/owner 时,只有读/写文件创建权限受到影响。
有什么建议么?
答案1
我找到了 samba 配置文件 ( ) 的设置/etc/samba/smb.conf
:
[global]
client min protocol = SMB2_10
client max protocol = SMB3_11
client ipc min protocol = SMB2_10
client ipc max protocol = SMB3_11
server min protocol = SMB2_10
server max protocol = SMB3_11
map readonly = permissions
store dos attributes = no
现在,我可以从 Windows 7/10 更改文件权限。
答案2
DOS 属性可以存储在文件系统扩展属性中(如果底层文件系统可以处理它们),也可以映射到传统的 UNIX 文件权限位
这个组合应该尽可能使用扩展属性,否则回退到 UNIX 文件权限位:
store dos attributes = yes ; Default yes
map archive = yes ; Default yes
map hidden = yes ; Default no
map readonly = yes ; Default no
map system = yes ; Default no
由于默认情况下已经存储 dos 属性,而这对您不起作用,因此您的底层文件系统可能无法处理扩展属性,您可能需要设置store dos attributes = no
.
请注意,手册页(请参阅 参考资料man smb.conf
)写道,
在 Linux 上,必须使用 mount 选项挂载文件系统
user_xattr
才能使扩展属性起作用,并且扩展属性还必须编译到 Linux 内核中。
也许这就是存储 DOS 属性对您不起作用的根本原因。
一个完全不相关的说明是,SMBv1 已被弃用,您不需要再使用它。如果需要,您可以让您的服务器接受 SMBv1(以及更高版本),但 Windows 10 在降级到旧版本之前会更喜欢使用 SMBv3。