![使用 cifs-utils 安装 Windows 共享时权限被拒绝](https://linux22.com/image/1445337/%E4%BD%BF%E7%94%A8%20cifs-utils%20%E5%AE%89%E8%A3%85%20Windows%20%E5%85%B1%E4%BA%AB%E6%97%B6%E6%9D%83%E9%99%90%E8%A2%AB%E6%8B%92%E7%BB%9D.png)
我想从我的 vbox ubuntu 机器访问 Windows 共享(我已正确设置所有代理)。
问题是,当我尝试通过以下方式挂载时,出现权限被拒绝错误,且没有任何额外原因:
mount -t cifs "//server/share" /windowsshare/myshare -o username=<activediruname>,password=<pass>,domain=<ADdomain>,ro
我收到此错误:
mount error(13): Permission denied
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)
我的$
密码里有一个字符,但我不认为这是问题,因为我也尝试设置PASSWD
环境变量并删除password=
选项,但仍然出现权限被拒绝错误。
关于如何进一步调试信息的任何想法、线索或信息都将不胜感激。
答案1
一般来说,如果你在命令行上使用 unescape 或非单引号美元符号,则需要参数扩展,即用参数值代替参数名。假设您的密码是foo$bar
。我使用echo
显示实际执行的命令行:
$ echo mount -t cifs ... -o username=user1,password=foo$bar,domain=WIN,ro
mount -t cifs ../../ -o username=user1,password=foo,domain=WIN,ro
$ PASSWD=foo$bar
$ echo $PASSWD
foo
您可以看到该$bar
部分被替换为空,因为在这个例子中没有bar
设置参数。为了防止这种情况,使用单引号围绕$
或整个学期:
$ echo mount -t cifs ... -o 'username=user1,password=foo$bar,domain=WIN,ro'
mount -t cifs ../../ -o username=user1,password=foo$bar,domain=WIN,ro
$ PASSWD='foo$bar'
$ echo $PASSWD
foo$bar
因此,错误的原因mount error(13): Permission denied
是服务器拒绝您的密码,因为 shell 替换了其中的某些部分。