无法通过 samba 服务器更改 NAS 共享上的文件/文件夹属性

无法通过 samba 服务器更改 NAS 共享上的文件/文件夹属性

我的情况:

  • 客户端 (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。

相关内容