装载CIFS凭证文件具有特殊字符

我无法在XenServer(5.6 FP1)上安装共享。 从命令行我尝试:

mount.cifs //server/share /mnt/share -o credentials=credfile 

credfile的内容是:

 username=Administrator password=What@zR\!p3s 

当我运行上面的安装命令,我得到“访问被拒绝”。 但是,如果我运行以下命令它的工作原理:

 mount.cifs //server/share /mnt/share -o username=Administrator,password=What@zR\!p3s 

请注意“\”是为了逃避砰的一声,我已经在证书文件中试过这个和没有它。 有什么build议么?

我有同样的问题,因为我的密码包含逗号符号(即“通过,字”):

 $ sudo mount -t cifs -o domain=mydomain,username=myuser,password=PASS,WORD //server/share localfolder mount error(22): Invalid argument Refer to the mount.cifs(8) manual page (eg man mount.cifs) 

首先,您应该尝试启用详细模式(–verbose选项):

 $ sudo mount -t cifs -o domain=mydomain,username=myuser,password=PASS,WORD //server/share localfolder --verbose mount.cifs kernel mount options: ip=172.30.91.137,unc=\\server\share,WORD,user=myuser,,domain=mydomain,pass=******** 

在这里我看到我的问题。 逗号打破所有的东西。 解决scheme是使用凭据文件。 什么是写在人mount.cifs:

credentials = filename指定一个文件,其中包含用户名和/或密码以及可选的工作组名称。 该文件的格式是:

  username=value password=value domain=value 

这比在共享文件中使用明文forms的密码更好,比如/ etc / fstab。 请确保正确保护任何凭据文件。

以任何你喜欢的方式创build这个文件:

 $ cat > cifs.credo username=myuser password=PASS,WORD domain=mydomain 

并使用(–verbose可以省略)

 $ sudo mount -t cifs -o credentials=path/to/cifs.credo //server/share localfolder --verbose mount.cifs kernel mount options: ip=172.30.91.137,unc=\\server\share,user=myuser,,domain=mydomain,pass=******** 

没有密码的问题。

旧版本的mount.cifs的一个常见问题是文件末尾的换行符被保存为密码的一部分。

所以你不需要转义,而应该试着重写这个文件而不用换行符。

要在vim中这样做,请使用:set noeol binary在保存前:set noeol binary 。 您可以使用xxd credfile检查是否没有尾随换行符,并确认它没有以0a结束。

如果这不起作用,我将不得不检查确切的代码库。 cifs-utils使用哪个包(发行版,版本和发行版)或源(存档名称)?

另一个要尝试的是键入特殊字符两次…我有一个$的密码,并不得不用$$replace它。 但是,我目前有胡萝卜问题:'^'

对于mount.cifs版本4.5,以下工作适用于我:凭证按域,用户名,密码,密码后不换行,不转义特殊字符或引号。

尝试引用它。

也就是说,

 password="What@zR!p3s" 

我希望这不是你的密码。 如果是这样,你现在需要改变它。

你有没有尝试删除斜杠? 彻底? 我不相信凭证文件应该需要逃脱。 它需要在shell上转义,因为shell正在解释字符,而不是mount.cifs命令。