访问 SMB 共享上的目录而不访问父目录

访问 SMB 共享上的目录而不访问父目录

我有来自 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 权限的任何尝试,而是相信服务器知道它在做什么(它确实做了)。

相关内容