我正在尝试将 NetApp CIFS 共享安装到我们的一台服务器,但我不断收到“权限被拒绝”打印到 stderr 并NT_STATUS_WRONG_PASSWORD
打印到正在运行的dmesg
.
root@xxxehpvld05 ~ $ mount.cifs -vv //zhp-nas.xxx.com/perspectives /mnt/secure/cifs -o credentials=/etc/cifs.creds
mount error(13): Permission denied
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)
root@xxxehpvld05 ~ $ dmesg | tail
CIFS VFS: cifs_mount failed w/return code = -13
Status code returned 0xc000006a NT_STATUS_WRONG_PASSWORD
CIFS VFS: Send error in SessSetup = -13
CIFS VFS: cifs_mount failed w/return code = -13
Status code returned 0xc000006a NT_STATUS_WRONG_PASSWORD
CIFS VFS: Send error in SessSetup = -13
CIFS VFS: cifs_mount failed w/return code = -13
Status code returned 0xc000006a NT_STATUS_WRONG_PASSWORD
CIFS VFS: Send error in SessSetup = -13
CIFS VFS: cifs_mount failed w/return code = -13
但是,使用相同的凭据文件,该smbclient
命令可以正常工作:
root@xxxehpvld05 ~ $ smbclient -L //zhp-nas.xxx.com/perspectives -A /etc/cifs.creds
Domain=[XXX] OS=[Windows 5.0] Server=[Windows 2000 LAN Manager]
Sharename Type Comment
--------- ---- -------
IPC$ IPC Remote IPC
ZHPSubmit-dev Disk
[...snip...]
似乎如果一个有效,另一个也应该有效,特别是因为凭据文件还指定了域名。
答案1
没有更多信息,我不能肯定地说,但我在连接到运行旧协议版本的旧 Windows 服务器时看到了这个问题。请记住,CIFS 被视为 SMB 的“方言”(类型)。还有其他类型,并且较旧的设置不使用 CIFS。
基本上就像是说两个人在说话。一种西班牙语和一种英语,你试图强迫说英语的人听懂西班牙语,但他显然听不懂。
SMBclient 使用不同的方言进行安全协商。 (或者至少检测到不同)。
尝试
mount -t cifs //路径/事物/ /mount/point -o 用户名=用户,密码=pass,秒=ntlm
看看会发生什么。 (sec=ntlm是重要部分)
答案2
通过使用命令,我发现了一个可能的原因:
从 smbclient 的手册页:
-A|--authentication-file=filename
This option allows you to specify a file from which to read the
username and password used in the connection. The format of the file is
username = <value>
password = <value>
domain = <value>
Make certain that the permissions on the file restrict access from
unwanted users.
从 mount.cifs 的手册页:
credentials=filename
specifies a file that contains a username and/or password and
optionally the name of the workgroup. The format of the file is:
username=value
password=value
domain=value
然后,我创建了两个凭证文件,一个带有空格,如第一个片段所示,另一个没有空格,并将它们命名为creds
和creds.spacy
。
大对决:
带creds
文件:
mount.cifs -vvv //host/path /local/path -o credentials=/path/creds
良好的沉默,没有错误。
带creds.spacy
文件:
# mount.cifs -vvv //host/path /local/path -o credentials=/path/creds.spacy
mount error(13): Permission denied
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)
显然,您的凭据文件包含空格,mount.cifs 无法理解这些空格。
此外,smbclient
如果有空格也没关系。creds
并creds.spacy
没有引起任何抱怨。
答案3
我今天在尝试挂载共享时发现的另一种可能性是支持smbmount
将username=DOMAIN\\user
域中的用户提供为凭据的语法。
为了使mount.cifs
( 和mount -t cifs
) 工作,必须单独提供这两个:-o username=user,password=pass,dom=DOMAIN
。
答案4
正如 user55518 所解释的,即使您没有看到它们,您的凭据文件中也可能有空格。如果您在 Windows 上编辑了凭据文件,则可能会\r
在行尾编辑并引发错误 13。