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

Dav*_*rge 14 linux mount cifs

我在 XenServer (5.6 FP1) 上安装共享时遇到问题。从命令行我尝试:

mount.cifs //server/share /mnt/share -o credentials=credfile
Run Code Online (Sandbox Code Playgroud)

credfile 的内容是:

username=Administrator
password=What@zR\!p3s
Run Code Online (Sandbox Code Playgroud)

当我运行上面的挂载命令时,我得到“拒绝访问”。但是,如果我运行以下命令,它会起作用:

mount.cifs //server/share /mnt/share -o username=Administrator,password=What@zR\!p3s
Run Code Online (Sandbox Code Playgroud)

请注意“\”是为了逃避爆炸,我已经在凭据文件中尝试过使用和不使用它。有什么建议?

小智 12

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

$ 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 (e.g. man mount.cifs)
Run Code Online (Sandbox Code Playgroud)

首先,您应该尝试启用详细模式(--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=********
Run Code Online (Sandbox Code Playgroud)

在这里,我看到了我的问题。逗号破坏了所有东西。解决方案是使用凭证文件。man mount.cifs 中写了什么:

凭据=文件名指定包含用户名和/或密码以及可选的工作组名称的文件。文件格式为:

          username=value
          password=value
          domain=value
Run Code Online (Sandbox Code Playgroud)

这比在共享文件(例如 /etc/fstab)中使用明文密码更可取。请务必正确保护任何凭据文件。

以您喜欢的任何方式创建此文件:

$ cat > cifs.credo
username=myuser
password=PASS,WORD
domain=mydomain
Run Code Online (Sandbox Code Playgroud)

并使用(--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=********
Run Code Online (Sandbox Code Playgroud)

密码没问题。


Pie*_*ier 6

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

所以你不应该需要转义,并且应该尝试在没有尾随换行符的情况下重写这个文件。

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

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


bah*_*mat 0

尝试引用它。

IE,

password="What@zR!p3s"
Run Code Online (Sandbox Code Playgroud)

我希望这不是的密码。如果是,您现在需要更改它。