将 SMB 登录从访客更改为其他用户?

将 SMB 登录从访客更改为其他用户?

我有一个文件服务器(如果重要的话,使用 Samba 4),我通常以具有只读访问权限的访客身份连接到它。我很少想更改其内容,因此我必须以其他用户身份登录。这有两个问题。

1) 我想在不断开共享的情况下执行此操作。也就是说,我想执行类似于 Unixsu命令的操作。SMB 协议中是否有这样的功能?

2)net use似乎不知道我何时连接到共享(通过运行访问它的程序)。它报告“列表中没有条目”,我也无法使用net use \\server\share /delete(“找不到网络连接”)。net use \\server\share /u:user但是尝试使用会失败,提示不允许使用多个用户名进行多个连接。除了关闭使用该连接的每个程序外,有没有办法强制断开隐式来宾连接?

答案1

回答你的第一个问题:

我认为不是。它不受支持的原因很简单,因为创建 SMB 的人没有费心添加这种支持。但是,作为一种解决方法,只需使用多个凭据,正如您所想的那样。

回答你的第二个问题:

不,你引用了计算机告诉你不能这样做。

“尝试使用 net use \server\share /u:user 但是会失败,提示不允许使用多个用户名进行多个连接。”

但是,我怀疑您可能能够使用另一个共享。只需创建一个指向同一位置的新共享文件夹即可。(使用 fsmgmt.msc,因为该界面将允许您创建共享。在命令行中,键入:“start fsmgmt.msc”。)或者,从客户端,尝试访问 \server\c$ 或 \server\d$ 或任何适当的位置。(如果您在服务器上运行 fsmgmt.msc,您可以看到适当的位置。)

共享正在使用,但“net use”看不到它,这听起来很奇怪。虽然理论上我认为程序可能包含嵌入式 SMB 客户端而不是使用 Windows 的客户端,这会导致“net use”看不到它(在客户端上)。不过,服务器应该使用“net session”报告它。

答案2

奇怪的是net use,它似乎不适用于访客用户。您可能必须深入研究 Win32 API 才能获得您真正想要的东西,而不是依赖命令行工具。

在 Windows 上更改网络共享的登录凭据的一种方法是试图以其他用户身份登录(例如输入错误的用户名和密码)。Windows 将自行清除旧的登录凭据。

不过,我发现了一种更有效的方法。只需调用WNetAddConnection2,Windows 就会自行清理,无需登录。

我编写了一个小型 C 程序,允许我在 Windows 上注销并以其他网络共享用户身份登录。运行该程序会显示标准的 Windows 网络登录对话框。

在我的代码中,我WNetCancelConnection2之前曾调用过WNetAddConnection2。如果我没记错的话,我认为取消未映射共享的连接不是必要的。但是,我还是取消了映射共享的连接,因为首先删除映射驱动器是有意义的,这样当没有活动登录凭据时它就不会出现。

请参阅我在此处针对 C 代码的回答:

相关内容