如何将权限/ACL 从 Samba 共享导出到客户端?

如何将权限/ACL 从 Samba 共享导出到客户端?

我有一台运行 Samba 的 Synology NAS,它在我的网络中提供共享。我已设置autofs、LDAP 和sssd,并且可以在登录 Linux 和 MacOS 计算机时动态安装 Samba 主目录。

我在 NAS 上的共享位于 Ext4 卷上,也就是说,它们从来都不是 Linux 文件系统上的 Linux 文件以外的任何东西。在 NAS 上,它们看起来像这样:

-rwxrwxrwx+ 1 smbowner users    0 Jan 30 03:05 abc
drwxrwxr--+ 2 smbowner users 4096 Jan 30 02:37 bin
-rw-r--r--  1 smbowner users    0 Jan 30 16:43 def

然而,在 Linux 客户端上它们看起来像这样:

---------- 1 netbackup netbackup 0 Jan 30 03:05 abc
drwxr-x--- 2 netbackup netbackup 0 Jan 30 02:37 bin
-rw-r--r-- 1 netbackup netbackup 0 Jan 30 16:43 def

所有文件都是在 Linux 客户端上创建的。它们最初都具有文件模式000,如上abc例所示。如果我更改 NAS 上的文件模式,就像我对 所做的那样def,更改将传递到客户端,如上所示 ( 0644)。但是,如果我chmod 0644在客户端执行此操作,我会收到一条错误消息(“更改‘abc’的权限:不支持操作”),但它还是会执行此操作 :-),NAS 上的结果是0666

在 NAS 端的列表中,文件模式后面有+符号,表示文件具有“syno ACL”,这是专有的 Synology ACL。这些文件被翻译并导出到客户端,在客户端上显示时如下所示getcifsacl

~> getcifsacl def
REVISION:0x1
CONTROL:0x8004
OWNER:S-1-5-21-1620245859-1572950330-1674857983-3068
GROUP:S-1-5-21-1620245859-1572950330-1674857983-1201
ACL:S-1-5-21-1620245859-1572950330-1674857983-3068:ALLOWED/OI|CI/0x1201df
ACL:S-1-5-21-1620245859-1572950330-1674857983-1201:ALLOWED/OI|CI/R
ACL:Everyone@WORLD AUTHORITY:ALLOWED/OI|CI/R
ACL:S-1-5-88-3-33188:DENIED/0x0/
ACL:S-1-5-88-1-1034:DENIED/0x0/
ACL:S-1-5-88-2-100:DENIED/0x0/

显然,这里有些不对劲:SID 应该被“idmapped”为 Linux 用户可识别的内容。

autofs挂载 Samba 共享的命令(从 LDAP 中提取)是:

-fstype=cifs,vers=3.1.1,cifsacl,perm,mapposix,user_xattr,domain=<dom>,rw,credentials=<file>,file_mode=0640,dir_mode=0750,uid=&,gid=& ://<machine>/<UNC>

我的理解是cifsacl应该导致上面的 SID 被“idmapped”。它也应该修复了文件模式...

根据我从网上各种来源收集的信息,我的印象是我需要以某种方式配置sssd(在客户端?)和smbd(在 NAS 上?)idmap数据。我的问题是,在没有 Active Directory 域控制器的情况下,我无法找到有关如何执行此操作的任何信息。

到目前为止我的结论正确吗?有没有一种方法可以sssdsmbdNAS 和客户端上的权限彼此相似?还是我应该考虑其他事情?

答案1

我不确定这是否是广义上的正确答案,但就解决我的问题而言,它是正确的。

本主题和其他早期主题中的讨论和建议(LDAP/Samba/autofsia) 让我重新考虑我的方法。我试图配置一个由 MacOS 客户端和 Unix/Linux 服务器组成的 LAN,并使用中央 LDAP 服务器进行身份验证、从一台机器到另一台机器的 SSH 访问、一些常见的网络文件系统和autofs。这部分是由于 Apple 放弃了 MacOS Server,也因为 Apple(对我来说:难以解释)转向 SMB。更迫切的需求是为 Mac OS 客户端的 Time Machine 备份重新建立一个有效的基础设施,这些备份失败是因为 Apple 使用他们的 SMBX 方言,而 Synology NAS 不支持该方言,而 TM 备份将存储在该方言上。

随着我进一步深入,我的网络中出现了越来越多的 Windows 垃圾,而我的网络中根本没有 Windows 机器。我的整个网络架构都由 Active Directory 决定,而我正无可避免地被推向这个方向。考虑到 Windows 文件系统与 MacOS 和 Unix/Linux 的匹配度非常差(从纯粹的结构意义上来说),仅仅因为 Apple 的命令而使用 SMB 突然显得很荒谬。Samba 是一款了不起的软件,但正如一句老话所说,“巧妇难为无米之炊”。

因此我开始用 NFSv4 替换 SMB。我现在有一个与我的 MacOS 和 Unix/Linux 文件系统一致的网络文件系统,而且我在过去三天取得的进展比之前三个月还要多。

我仍然面临着为 Time Machine 备份提供网络访问的问题,但我会通过将磁盘连接到 Mac Mini(它一直是我的传统服务器,现在有空闲时间)并让 Apple 的 SMB 实现来处理纯粹的 Apple 问题来实现这一点。

我之所以尝试使用 SMB,是因为我从 Apple 和网络上听说这真的是城里唯一的展会。Apple 放弃了对 AFP 的支持(AFP 在 Unix/Linux 上实际上不起作用 - 但是 SMB 也不行);而且 NFS 据说太不安全了。即使 SMB 解决方案有效,拼凑起来也可能更加不安全。所以,我希望我的问题现在已经解决了。

即使这不是一个正确的答案:-)

相关内容