我听说,如果在共享名称后附加一个美元符号,Windows 就会让客户端看不到该共享名称。事实上,在 Windows 上,您看不到以美元符号结尾的共享;您必须手动输入名称。
不过,浏览 Linux 桌面上的共享文件夹列表,我可以清楚地看到所有共享 - 隐藏或未隐藏。所有共享(如 C$ 和 ADMIN$)都与可见共享一起在那里。
我认为 Windows 的 SMB 服务器在设计上根本没有将这些名称透露给任何人,那么 Linux 怎么能够查看它们呢?
要查看我登录的共享列表,这可能与此有关吗?一些特殊的用户组允许您查看所有共享?
答案1
正如评论中所述,共享名称后面的美元符号只是由客户端解释,因此共享会从视图中删除。最终,共享将要成为结果集的一部分NetShareEnum
API 调用。您还可以使用net view \\computername /all
列出所有共享(包括隐藏共享)的命令从 Windows Vista/Server 2008 开始。
所需的权限类型可能取决于服务器的版本和配置。Windows Server 2003 及更早版本默认允许使用 NULL 会话进行共享枚举(因此根本不需要提供身份验证)。Windows Server 2008 改变了这一点,“每个人”都可以枚举所有共享 - 这需要使用任何有效用户(包括 Guest 用户,如果已启用)进行身份验证。
答案2
http://www.samba.org/samba/docs/using_samba/ch08.html
问题始终是为什么 Samba 不能发挥应有的作用。Windows 的所有问题和缺点都与这个所谓的特性一致。至于为什么,那说来话长。