在UNC路径中传递UNC用户名和密码


21

是否可以在UNC路径中传递UNC用户名和密码?

与FTP和SMB如何支持相似:

smb://user:pass@destination.com/share
ftp://user:pass@destination.com/share

我试图获得(非域PC)服务访问DFS路径。

还有另一种方法吗?我可以将PC绑定到域并以域用户身份运行服务但是如果我使用的是Linux?

Answers:


18

在Windows上, 不能 将凭据放在UNC路径中。您必须使用它们 net userunas /netonly,或者在Windows上询问时。 (如果您具备某些编程技能,则可以使用将“SMB密码”存储为“域凭据” CredWrite(),这相当于检查Windows中的“记住密码”框。)

在Linux上, 这取决于程序。

  • GNOME的Gvfs接受了 user@host 语法,但似乎完全忽略了密码。 (但是,您可以事先将它存储在GNOME Keyring中。)

  • smbclient 使用与Windows相同的UNC语法;但它有一个 --authentication-file 可以从中读取凭据的选项。

  • 以上两个程序都在使用 libsmbclient ,并且可以使用Kerberos身份验证而不是密码:运行 kinit user@YOUR.DOMAIN 并使用 smbclient -k //host/share。这比密码验证更安全。

请注意,不建议将密码放入URI中,您不应该依赖它来支持它 随地


您是否有关于“将密码放入URI中”的引用?
Alexis Wilke

2
@AlexisWilke RFC1738§3.3 开始时不允许它们在HTTP中, RFC2396§3.2.2 有一个更普遍的“不推荐”,和 RFC3986§3.2.1 说“不推荐使用userinfo字段中的用户:密码”格式。
grawity

13

您可以使用“将”驱动器映射到UNC路径 net use。未来的访问应该共享现有的连接

Net Use \\yourUNC\path /user:uname password

注意:您无需指定驱动器号


1

我认为在完成任何文件访问之前,必须首先将用户名和密码传递给服务器进行身份验证,因此处理SMB连接的代码必须能够解析并从URL中添加用户名和密码。您必须检查该代码是否支持此格式。

如果没有,您可以通过SAMBA安装该SMB共享,​​并指示您的程序使用该“本地”路径。你可以把装载进去 fstab 并使用SAMBA密码文件提供用户凭据。请记住为密码文件设置正确的权限,以便普通用户无法读取它。

请注意,在配置文件中以明文形式存储密码是不好的做法,因此即使您的程序可以在URL中处理密码,您也应该考虑已安装的共享方法。


fstab 不是“明文配置文件”?
grawity

1
是的,但在fstab中,您指的是密码文件,而不是直接包含密码。然后,您可以通过将所有者更改为root并将模式更改为400来保护密码文件。
billc.cn

那仍然是一个明文配置文件。对机器进行物理访问的任何人都可以通过重启获得root权限。像XFCE,KDE和Gnome这样的桌面环境可以将凭证存储在密码保险库中,这可能是更好的选择。
bobpaul

0

您可以在“控制面板/用户/ Windows凭据管理器”中添加凭据,以便缓存凭据。您将使用域用户名/密码添加设备名称(server.domain.local),然后您应该能够访问共享而无需再次提供凭据。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.