安装错误 13 = 权限被拒绝

Pic*_*kle 58 linux samba fstab

我的一台服务器设置为使用 fstab 自动挂载 Windows 目录。但是,在我上次重新启动后,它停止工作。fstab 中的行是:

//myserver/myfolder /mnt/backup cifs credentials=home/myfolder/.Smbcredentials
Run Code Online (Sandbox Code Playgroud)

.Smbcredentials文件是:

username=myaccount
password=mypassword
domain=mydomain
Run Code Online (Sandbox Code Playgroud)

我做了一个mount -a,我收到了mount error 13 = Permission denied。如果我这样做足够了,它会锁定我的 Windows 帐户,所以我知道它正在尝试。我已经检查过我的密码是否正确。

我究竟做错了什么?

slm*_*slm 59

有几件事要检查。我做了类似的事情,你可以使用mount命令直接测试挂载它,以确保你设置正确。

凭证文件的权限

确保此文件的权限正确。

$ sudo ls -l /etc/smb_credentials.txt 
-rw-------. 1 root root 54 Mar 24 13:19 /etc/smb_credentials.txt
Run Code Online (Sandbox Code Playgroud)

详细挂载

您可以mount通过使用-v开关来获取更多信息,这通常会向您显示哪里出错了。

$ sudo mount -v -t cifs //server/share /mnt \
    -o credentials=/etc/smb_credentials.txt
Run Code Online (Sandbox Code Playgroud)

如果它有效,则会产生此输出:

mount.cifs kernel mount options: ip=192.168.1.14,unc=\\server\share,credentials=/etc/smb_credentials.txt,ver=1,user=someuser,domain=somedom,pass=********
Run Code Online (Sandbox Code Playgroud)

检查日志

运行上述 mount 命令后,查看您的dmesg/var/log/messages/var/log/syslog文件中是否有在您尝试mount.

安全类型

你可以通过-o ..switch传递很多额外的选项来挂载。这些选项是特定于技术的,因此在您的情况下,它们mount.cifs专门适用于。查看mount.cifs手册页以了解有关您可以传递的所有选项的更多信息。

我怀疑你错过了一个选项sec=...。特别是这些选项之一:

   sec=
       Security mode. Allowed values are:
       ·   none - attempt to connection as a null user (no name)
       ·   krb5 - Use Kerberos version 5 authentication
       ·   krb5i - Use Kerberos authentication and forcibly enable packet 
           signing
       ·   ntlm - Use NTLM password hashing
       ·   ntlmi - Use NTLM password hashing and force packet signing
       ·   ntlmv2 - Use NTLMv2 password hashing
       ·   ntlmv2i - Use NTLMv2 password hashing and force packet signing
       ·   ntlmssp - Use NTLMv2 password hashing encapsulated in Raw NTLMSSP
           message
       ·   ntlmsspi - Use NTLMv2 password hashing encapsulated in Raw 
           NTLMSSP message, and force packet signing

       The default in mainline kernel versions prior to v3.8 was sec=ntlm. 
       In v3.8, the default was changed to sec=ntlmssp.
Run Code Online (Sandbox Code Playgroud)

您可能需要调整该sec=...选项,使其为sec=ntlmsec=ntlmssp

参考

  • 检查 `dmesg` 非常有帮助。这个答案是从 2014 年开始的,从那时起,对 SMB1.0 的 WannaCry 漏洞利用使它被弃用,所以一定要添加 `vers=2.0` 或 2.1 或 3.0,无论服务器支持什么,因为默认的 1.0 将不再是支持的。 (2认同)
  • 我必须指定 `sec=ntlm` 来安装 Synology 共享,非常感谢! (2认同)

Pic*_*kle 27

谢谢,但更多的谷歌搜索找到了解决方案。默认情况下,它使用了错误的安全类型;此命令有效:

$ sudo mount -t cifs //172.16.1.5/myshare/ /mnt/myshare \
    -osec=ntlmv2,domain=MYDOMAIN,username=myusername,password=mypassword
Run Code Online (Sandbox Code Playgroud)

  • 来到这里试图从 CentOS 6 非成员那里挂载一个 Debian 9 AD 成员,这让我很接近——就我而言,魔法是 `sec=ntlmssp` (2认同)

小智 14

我遇到了这个问题,结果证明我的凭据文件中的值没有正确格式化。我试过:

username=DOMAIN\mylogin
password=<password>
domain=FULLY.QUALIFIED.DOMAIN
Run Code Online (Sandbox Code Playgroud)

我也试过:

username=myemailaddress@someplace.com
password=<password>
domain=FULLY.QUALIFIED.DOMAIN
Run Code Online (Sandbox Code Playgroud)

和:

username=FULLY.QUALIFIED.DOMAIN\mylogin
password=<password>
domain=FULLY.QUALIFIED.DOMAIN
Run Code Online (Sandbox Code Playgroud)

一旦我只使用我的登录用户名:

username=mylogin
password=<password>
domain=FULLY.QUALIFIED.DOMAIN
Run Code Online (Sandbox Code Playgroud)

我能够让我的 cifs 挂载成功。