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

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

命令挂载.cifs发现无法在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/目录/路径和凭证文件/etc/用户。相关模块和服务也已启用,即

 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

答案1

如果您尝试从较新版本的 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 文件中:

user=MyUser
password=MyPassword
domain=MyDomain

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

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

从 mount.cifs 手册页:

vers=arg
       SMB protocol version. Allowed values are:

       · 1.0 - The classic CIFS/SMBv1 protocol.

       · 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.

       · 3.02 or 3.0.2 - The SMBv3.0.2 protocol that was introduced in Microsoft Windows 8.1 and Windows Server 2012R2.

       · 3.1.1 or 3.11 - The SMBv3.1.1 protocol that was introduced in Microsoft Windows 10 and Windows Server 2016.

       · 3 - The SMBv3.0 protocol version and above.

       · default - Tries to negotiate the highest SMB2+ version supported by both the client and server.

       If no dialect is specified on mount vers=default is used.  To check Dialect refer to /proc/fs/cifs/DebugData

       Note too that while this option governs the protocol version used, not all features of each version are available.

       The default since v4.13.5 is for the client and server to negotiate the highest possible version greater than or equal to 2.1. In kernels prior to v4.13,
       the default was 1.0. For kernels between v4.13 and v4.13.5 the default is 3.0.

答案2

尝试安装 keyutils 包:

sudo apt-get install keyutils

不确定为什么这有帮助,也许其他人在这里有答案。但至少它对我有用:使用 keyutils,cifs 挂载工作得很好。

答案3

可以使用nodfs选项吗?即对于您的-o选项输入,请传递以下输入。

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

即附加,nodfs

这对我有用。

答案4

您可能需要更改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.

相关内容