不能使用mount.cifs:安装错误(2):没有这样的文件或目录


17

发现mount.cifs命令无法在具有systemd的gentoo系统中运行

ae429-1105 etc # mount -t cifs //file.abc.edu.au/user /home/directory/path -o credentials=/etc/user,rw,iocharset=utf8,file_mode=0777,dir_mode=0777
mount error(2): No such file or directory
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)

已经确认安装点/ home / directory / path和凭证文件/ etc / user的存在和可访问性 。相关模块和服务也已启用,即

 ae429-1105 etc # lsmod |egrep 'fuse|cifs'
 fuse                   72589  5 
 cifs                  312131  0

ae429-1105 etc # systemctl -t service -a |grep Samba
nmbd.service                         loaded active   running Samba NetBIOS                     name server
smbd.service                         loaded active   running Samba SMB/CIFS     server
winbindd.service                     loaded inactive dead    Samba Winbind daemon

许多用户已经发现了这个问题,例如一个例子还请注意,在我的Ubuntu / debian系统中执行的同一命令可以成功安装。

有问题的机器中的其他信息:

ae429-1105 etc # mount.cifs --version
mount.cifs version: 6.1

在debian / ubuntu中安装的mount.cifs版本是6.0


/home/directory/path肯定存在于Gentoo环境中?奇怪的是您没有提到这是显而易见的第一个问题。
Hauke Laging

是的,我已经确认了挂载点/ home / directory / path的存在和可访问性。
Chenming Zhang 2014年

您应该将此信息添加到问题中,以便其他读者无需阅读评论即可获取。
Hauke Laging

Answers:


8

如果尝试从较新版本的Windows挂载共享,则可能需要在mount命令中提供vers =选项以强制使用3.0版。我们的文件服务器之一最近升级到了2012R2,那时我的挂载停止工作。将其设置为vers = 3.0可以解决此问题。像大多数Samba / CIFS错误一样,“无此文件或目录”消息也无济于事。

举个例子:

# mount -t cifs //win2012r2/someshare -o cred=/home/foo/.cifs_user, vers=3.0 /mnt/tmp

..我的域名,用户名和密码都包含在.cifs_user文件中。

显然,默认情况下,smbmount使用SMB协议的较新版本,因为它可以正常工作而没有任何问题或任何特殊选项。

请注意,下面的默认协议版本是1.0。

从mount.cifs手册页:

vers=
           SMB protocol version. Allowed values are:

           ·   1.0 - The classic CIFS/SMBv1 protocol. This is the default.

           ·   2.0 - The SMBv2.002 protocol. This was initially introduced in Windows Vista Service Pack 1, and
               Windows Server 2008. Note that the initial release version of Windows Vista spoke a slightly
               different dialect (2.000) that is not supported.

           ·   2.1 - The SMBv2.1 protocol that was introduced in Microsoft Windows 7 and Windows Server 2008R2.

           ·   3.0 - The SMBv3.0 protocol that was introduced in Microsoft Windows 8 and Windows Server 2012.

我对v1.0中不支持的“ nounix”标志有类似的问题。更改为v2.0(对我来说是最新版本)可解决此问题。此外,使用vers = 2.0(755而不是777)时,文件权限更加明智
-cxrodgers

2
非常感谢与vers = option有关的解决方案!它对我有用,只是向后...在将opensuse升级到42.3版本到15.1之后,一个用于安装网络驱动器的fstab条目有效,但在15.1中停止了工作。我使用了vers = 1.0选项,然后猜测是什么...可能是15.1版使用了无法找到远程目录的SMB协议的较新版本。
约翰,

从Ubuntu 19.04连接到Windows Server 2003上托管的共享对我而言一直失败,直到我将vers = 1.0添加到我的选项列表中为止。谢谢!
user8675309

它对我有用,除了:我必须声明版本2 vers=2.0才能挂载我使用了5年的NAS系统的samba共享... 3.0出现了上述错误。
Frank Nocke

etc/fstab用户:只需将其vers=3.0(或2.0 ...)正确且无间隔地放在其他选项之前,即vers=2.0,guest,uid=1000,iocharset…
Frank Nocke

5

你可以使用nodfs期权吗?即对于您的-o选项输入,请通过以下输入。

-o credentials=/etc/user,rw,iocharset=utf8,file_mode=0777,dir_mode=0777,nodfs

即附加 ,nodfs

它为我工作。


谢谢!我首先尝试了所有其他建议,但是我需要在fedora30上使用它,而以前我并不需要它
Jens Timmerman

2

您可能需要更改sec参数:此设置使其可以在我的设置中使用:

mount.cifs ... -o sec=ntlm

相关提取物man mount.cifs

sec=安全模式。允许的值为:

  • none -尝试以空用户身份连接(无名称)
  • krb5 -使用Kerberos版本5身份验证
  • krb5i -使用Kerberos身份验证并强制启用数据包签名
  • ntlm -使用NTLM密码哈希
  • ntlmi -使用NTLM密码哈希并强制进行数据包签名
  • ntlmv2 -使用NTLMv2密码哈希
  • ntlmv2i -使用NTLMv2密码哈希并强制进行数据包签名
  • ntlmssp -使用封装在原始NTLMSSP消息中的NTLMv2密码哈希
  • ntlmsspi -使用封装在原始NTLMSSP消息中的NTLMv2密码哈希,并强制进行数据包签名

    v3.8之前的主线内核版本的默认值为sec=ntlm。在v3.8中,默认设置已更改为sec=ntlmssp

    如果服务器在协议协商期间需要签名,则可以自动启用它。如果在中启用了数据包签名,也可能会自动启用它/proc/fs/cifs/SecurityFlags


1

我在Ubuntu 18.04上遇到了这个问题。问题是我需要keyutils软件包来进行Kerberos身份验证(sec=krb5安装选项),而Kerberos身份验证未与cifs-utils(提供mount.cifs)一起安装。我不确定Gentoo上的软件包名称是否相同。(感谢https://forum.zentyal.org/index.php?topic=18601.0提供解决方案。)


1

尝试安装keyutils软件包:

sudo apt-get install keyutils

不确定到底有什么帮助,也许其他人在这里有答案。但是,至少它对我有用:使用keyutils,CIF挂载就可以了。


请添加一些有关如何解决问题的信息。这个程序包有什么作用,如何解决OP提出的问题?
Haxiel,时间

好问题。我不确定keyutils软件包如何提供帮助。就我而言,至少这就是诀窍。安装keyutils后,我的cifs挂接工作正常,而在得到错误消息“挂接错误(2):无此类文件或目录”之前,就像在OP中一样。
克劳斯,


1

我想补充我今天遇到的这个问题的另一个来源。更改Unix用户的用户ID后,通过smbpasswd创建的smb用户可能无法再验证samba共享,从而导致相同的错误。

因此,如果您通过更改了Unix用户ID,usermod -u 1000 my_user则可能会遇到问题。对我来说,解决方法是随后删除并重新添加smb用户:

smbpasswd -x my_user
smbpasswd-一个my_user

的确如此,这与原始问题有何关系?
RalfFriedl

正如我所说,如果更改用户的用户ID,则会出现与原始问题相同的错误。因此,如果有人做了同样的事情并找到了这个线索,他或她可能会觉得我的提示有用。
Ryad

1

$在末尾添加一个//winserver/sharename$

mount.cifs -v -o username=myusername,domain=MYCODOMAIN //winserver/sharename$ /mnt/mymountpoint

哇!知道“ $”的作用是什么?它为我解决了问题,却不知道为什么
加布里埃尔·费尔

$符号是Windows共享上下文中的管理共享,如果被系统激活,则具有管理权限的用户可以访问所有路径。示例\\ MY-SERVER \ c $
Phil795,19年

0

我在CentOS 7 VM上使用mount.cifs遇到了同样的“安装错误(2):没有这样的文件或目录”错误。我从未确定使用默认的ntlm安全性(及其变体)时为什么会生成错误,但是我确实发现使用Kerberos身份验证可以解决此问题。因此,我的最终工作命令行如下所示:

mount.cifs -v -o domain=MYCODOMAIN,sec=krb5 //winserver/sharename /mnt/mymountpoint

而给出“没有这样的文件或目录”错误的命令是:

mount.cifs -v -o username=myusername,domain=MYCODOMAIN //winserver/sharename /mnt/mymountpoint

要使用Kerberos,我安装了“ krb5-workstation”软件包并对其进行了配置。



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.