为什么mount.cifs可以挂载空文件夹?

为什么mount.cifs可以挂载空文件夹?

gentoo、内核 3.7.10
samba 3.6.12
SMB/CIFS 服务器:Windows Server 2003 3790 Service Pack 2

mount.cifs我遇到过行为与程序不同的情况smbclient

以下命令工作正常。我可以登录服务器并浏览共享的内容。

smbclient -U domainname/username //server.name/sharename

如果我尝试使用以下命令安装这个共享文件夹,

mount -t cifs //server.name/sharename /mount/point -o user=domainname/username

那么命令本身就可以正常工作(返回代码为 0,没有错误消息)。但/mount/point看上去很空虚。

有什么问题?为什么mound.cifssmbclient行为不同?也许smbclient使用一些隐藏的设置?

顺便说一句,我不知道这是否与问题相关,但无论如何。如果我mount.cifs多次运行命令,我不会收到任何folder already mounted类型的消息。虽然之后我可以运行umount相同的次数,直到出现错误umount: /mount/point/: not mounted

答案1

smbclient 没有安装共享,而是“mount -t cifs ...”正在执行此操作。您需要成为超级用户才能安装共享。你能尝试一下sudo mount -t cifs //server.name/sharename /mount/point -o username=youruser,domain=yourdomain吗?

答案2

最后我解决了这个问题。感谢 Wireshark。

从 Wireshark 的日志中,我看到smbclient它的工作何时完成,然后对等方交换了 GET_DFS_REFERRAL 子命令。但当我尝试使用 挂载共享时,这些消息不存在mount.cifs

服务器似乎使用了分布式文件系统设施,因此我尝试将 DFS 支持添加到内核中,结果成功了。现在我可以在已安装的共享中完美地导航、阅读和写入。

实际上我是这么想的,smbclientmount.cifs使用相同的低级工具连接到 SMB/CIFS 服务器,但事实并非如此。看起来 Samba 可以在没有内核支持的情况下自行处理 DFS。

相关内容