如何在服务器和客户端之间设置相同的用户/组所有权的仅限 Linux 的 Samba

如何在服务器和客户端之间设置相同的用户/组所有权的仅限 Linux 的 Samba

在开始之前,我应该注意,我所要求的与添加到 mount.cifs 的“vers=1.0”标志完美配合。但在服务器上进行操作系统升级(将 samba 升级到 )后Version 4.13.17-Ubuntu,这显然不再受支持。

另请注意,这里不涉及 Windows - 我只处理 Linux 用户、组和权限信息。

我有一个运行 smbd 并共享 /data 卷的 Ubuntu 20.04 服务器,以及一个与 mount.cifs 共享的 Ubuntu 20.04 客户端安装。在客户端上,ls -l显示 root/root 拥有的所有内容:

# mount.cifs //server/data /data -o username=username,password=password
# ls -l /data
total 0
drwxr-xr-x 2 root root 0 Mar 29 14:07 directory-a
drwxr-xr-x 2 root root 0 Feb 13 16:43 directory-b
drwxr-xr-x 2 root root 0 May 17  2012 etc
drwxr-xr-x 2 root root 0 Apr 21  2014 lost+found
drwxr-xr-x 2 root root 0 Feb 13 16:43 shared

我想要的是是让客户端看到与服务器上相同的用户、组和权限,例如:

server# ls -l /data
total 0
drwxr-xr-x 2 fred fred      4096 Mar 29 14:07 directory-a
drwxr-xr-x 2 barney barney  4096 Feb 13 16:43 directory-b
drwxr-xr-x 2 wilma wilma    4096 May 17  2012 etc
drwx------ 2 root root     16384 Apr 21  2014 lost+found
drwxrwxr-x 2 fred users     4096 Feb 13 16:43 shared

所有用户和组帐户都存在,并且在两个系统上都具有相同的 UID 和 GUI(正如我上面所说,这一切以前都运行良好)。以下是服务器升级之前在客户端上使用的旧 fstab 条目:

//server/data  /data  cifs _netdev,username=username,password=password,noexec,noacl,vers=1.0 0 0

现在出现错误:

# mount /data
mount error(95): Operation not supported
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs) and kernel log messages (dmesg)

并删除“vers=1.0”标志修复了此错误,但结果如上所示(丢失所有用户/组/权限信息)。

服务器上的 smb.conf 包含:

[global]
    workgroup = WORKGROUP
    server string = Server
    log file = /var/log/samba/log.%m
    max log size = 1000
    logging = file
    panic action = /usr/share/samba/panic-action %d

    server role = standalone server
    passdb backend = smbpasswd
    obey pam restrictions = no
    unix password sync = no
    pam password change = no
    map to guest = Never

    # defaults for shares
    guest ok = no
    create mask = 0775
    directory mask = 0775
    case sensitive = yes
    map archive = no

[data]
    comment = Data
    path = /data
    writeable = no
    browseable = yes
    write list = fred

问题

有没有办法让新版本的 Samba 保持旧的 vers=1.0 行为?谢谢!

答案1

好吧,我终于找到了。将其添加到 smb.conf 允许再次使用 vers=1.0 选项:

server min protocol = NT1

我在一份不起眼的错误报告中发现了它: https://bugs.launchpad.net/ubuntu/+source/samba/+bug/1883234

Unix 扩展仅适用于 SMB1 协议,该协议已被弃用并且默认情况下不再使用。正在开发以在 SMB3 中支持它们。

您可以通过将其添加到服务器 smb.conf 中的 [global] 来重新启用 SMB1:

服务器最小协议 = NT1

您可以再次尝试上述设置并报告吗?

列出目录时还会有一个新的副作用,即权限字段中会出现一个额外的 +(加号),而以前的版本中没有此功能。它看起来像这样:

# ls -l /data
total 0
drwxr-xr-x+  2 fred   fred      4096 Mar 29 14:07 directory-a
drwxr-xr-x+  2 barney barney    4096 Feb 13 16:43 directory-b
drwxr-xr-x+  2 wilma  wilma     4096 May 17  2012 etc
drwx------   2 root   root     16384 Apr 21  2014 lost+found
drwxrwxr-x+  2 fred   users     4096 Feb 13 16:43 shared

我找不到任何有关它的文档,但它似乎对应于我有写入权限的文件和目录。

相关内容