我在 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 中写了什么:
凭据=文件名指定包含用户名和/或密码以及可选的工作组名称的文件。文件格式为:
Run Code Online (Sandbox Code Playgroud)username=value password=value domain=value这比在共享文件(例如 /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)
密码没问题。
旧版本 mount.cifs 的一个常见问题是文件末尾的换行符作为密码的一部分保留。
所以你不应该需要转义,并且应该尝试在没有尾随换行符的情况下重写这个文件。
要在 vim 中执行此操作,请:set noeol binary在保存之前使用。您可以使用 来检查是否没有尾随换行符xxd credfile,并确认它没有以 结束0a。
如果这不起作用,我将不得不检查您的确切代码库。您使用的是哪个包(发行版、版本和发行版)或源(存档名称)cifs-utils?