我有来自 Windows 2019 主机的 SMB 共享:
\\server\share
我可以将其安装mount.cifs
到我的 Linux 服务器上/mnt/
然后我尝试访问下几级的目录:
\\server\share\dir1\dir2\dir3\dir4
/mnt/dir1/dir2/dir3/dir4
我用来装载共享的 Windows 用户帐户具有 的读取权限dir1
,但没有dir2
或 的读取权限dir3
。该帐户具有完全控制权dir4
。
dir4
在另一个 Windows 系统上,尽管无法访问dir2
或,但我仍然可以访问dir3
,我必须输入完整路径才能访问dir4
,并且无法浏览到它(这很好)。
dir4
在 Linux 上,即使直接 cd 也无法访问。
我知道这有点奇怪,因为在 UNIX 系统上,您需要访问每个父目录才能访问子目录,但我不确定为什么我的示例不起作用。
答案1
您需要在基于 Linux 的客户端上的选项noperm
中指定。mount
文档 ( man mount.cifs
) 指出,
noperm
客户端不进行权限检查。 [...] 通常仅当客户端和服务器系统上的 UID/GID 匹配不够紧密以至于无法允许执行挂载的用户进行访问时才需要它。请注意,这不会影响服务器软件对目标计算机进行的正常 ACL 检查 [...]
这意味着noperm
将关闭本地文件系统层解释 CIFS 合成的 POSIX 权限的任何尝试,而是相信服务器知道它在做什么(它确实做了)。