mount.cifs不能使用smbclient使用的同一证书文件


10

我试图将NetApp CIFS共享安装到我们的其中一台服务器上,并且不断将“ Permission Denied”(权限被拒绝)打印到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...]

似乎一个人也应该工作,特别是因为凭据文件还指定了域名。


赏金发生了什么事?

从来没有一个对我有用的答案,所以赏金最终失效了,所有这些要点都变成了渡渡鸟。
布拉奇利2014年

如果您能想到答案,我会给您一个新的赏金,如果我没有答案,我就是不想失去积分。
布拉奇利2014年

因此,我遇到了类似的问题(内核模块出现-13错误)。我安装了cifs-utils软件包(Debian),它解决了该问题。我花了一些时间进行调试,因为在没有安装该软件包的情况下我不希望得到任何支持,所以我以为是。我曾期望从挂载中获得“未知文件系统”之类的信息,但那没有发生。
sherrellbc

Answers:


7

没有更多信息,我不能肯定地说,但是在连接到运行旧协议版本的旧Windows服务器时,我已经看到了此问题。请记住,CIFS被视为SMB的“方言”(类型)。还有其他类型,较早的设置不使用CIFS。

基本上就像是说两个人在说话。一种西班牙语和一种英语,而您试图强迫英语使用者说​​清楚的话,但他显然不会。

SMBclient使用不同的代表进行安全协商。(或至少检测不同)。

尝试

mount -t cifs //路径/事物/ / mount / point -o username = user,password = pass,sec = ntlm

看看会发生什么。(sec = ntlm是重要的部分)


即使指定NTLM身份验证,也会出现相同的问题。如果我做ntlm或也一样ntlmv2。我不确定如何解决它,因此,如果您需要更多信息,请告诉我,我将更新问题。SAN管理员可能会错过NetApp方面的某些访问控制吗?
布拉奇利2014年

服务器软件版本,是否有路由器或交换机?
coteyr

相同的子网。由于是NetApp ONTAP设备,因此不确定另一端是哪个版本的Samba。
布拉奇利

4

在玩这些命令时,我发现了一个可能的原因:

在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

然后,我创建了两个凭据文件,一个带有空格,如第一个代码片段所示,一个没有空格,并将它们命名为credscreds.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是否有空格也没关系。credscreds.spacy没有造成任何松鸡。


文件末尾有一个额外的空行,但是删除后我得到了同样的东西。这是 creds文件中内容的略述版本。已编辑密码和真实密码是大小写混合的密码,包含“!” 作为特殊字符。
布拉奇利2014年

还有一个方面,这个解决方案使我发现:凭据必须以正确的顺序排列,即用户名,密码,域,而不是像域,用户名,密码(这就是我所拥有的)之类的任何其他顺序。这也可以正常使用,smbclient但不能成功mount.cifs。一旦我将订单更改为您在此处引用的文档中指定的正确顺序,它便开始工作。此类错误(空间处理不当和排序问题)都是可怕的错误,无论谁维护,都应可以轻松修复mount.cifs
leftclickben

2

添加sec = ntlm为我解决了该问题。我有一个较旧的NAS(netgear stora)。最近内核中CIF的默认安全性是ntlmssp


也为我工作。我还不知道真正的原因。如果它对某人有帮助,请执行以下操作:isilon在ubuntu LTS 14.04上安装。isilon(有些SAN问题)与我们的Windows Active Directory对话。在其他计算机上以及直接将其安装在Windows中时,同一帐户的工作方式就像一个超级按钮。
Reinout van Rees

额外注意:具有最新更新的12.04可以正常工作,而14.04现在已成为问题的一部分(2015年4月下旬)。
Reinout van Rees 2015年

最后一点说明:核心问题是与emc isilon存储相关的已知的Microsoft问题,并更新了KB3002657(或者我的系统管理员现在告诉我:
Reinout van Rees

2

我今天尝试挂载共享时发现的另一种可能性是,smbmount支持将username=DOMAIN\\user语法提供给域中的用户作为凭据的语法。

为了mount.cifs(和mount -t cifs)正常工作,必须分别提供以下两个:-o username=user,password=pass,dom=DOMAIN


要安装由NetApp集群模式Data ONTAP提供的smb 3.0共享,必须同时调用sec=ntlmdom=DOMAIN
iii

1

正如user55518所解释的,即使您没有看到它们,您的凭据文件中也可能有空格。如果您在Windows上编辑了凭据文件,则可能\r在行尾,这会引发错误13。


您可以在vim中使用命令集列表检查是否有多余的制表符/空格
vfbsilva

0

我要感谢你们所有人!对于这个问题,它确实对我有很大帮助!,我也发现了有关参数“ sec = ntlm”的一些重要信息,因此,如果您对某些内容感兴趣,我会留下链接,如下所示:

微软NTLM

我试图从Windows 7桌面挂载共享目录,但是直到添加参数“ sec = ntlm”都无法实现,并且它起作用了,一些重要的细节可能是我没有考虑到我的Windows 7桌面进入了领域,所以我认为这是我应该考虑的最重要的细节。因此,它行得通!,真的非常感谢你们!!祝福!和良好的共鸣!:D


0

就我而言,我只需要添加该选项vers=3.0(CIFS是版本1,从内核4.13开始不再受支持,因此我在服务器上直接切换到SMBv3),但仍然必须重新引导以使其运行,这是我的/etc/fstab现在安装线:

auto,rw,credentials=/usr/local/etc/smb.credentials,vers=3.0,file_mode=0664,dir_mode=0775,uid=myuser,gid=users

我的凭证文件:

username=myuser
password=****
domain=mydomain

实际上,domain这不是必需的,但这是现在根据mount.cifs手册页使用的正确选项。


0

我已经为此努力了一段时间。

有以下错误:

mount error(112): Host is down

在这里,它有助于设置vers = 1.0选项,然后报告

mount error(13): Permission denied

结果证明我的凭证文件中有多余的字符

我最初在哪里:

# cat /etc/samba/cred-file
username="john"
password="secret"

应该在哪里

# cat /etc/samba/cred-file
username=john
password=secret
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.