我刚刚将文件服务器从 16.04 升级到 20.04,除了 Ubuntu 计算机上的 SMB 安装外,一切似乎都正常。我可以访问 Windows 计算机上的 SMB 共享,但在我的 Ubuntu 18.04 计算机上,我无法在 fstab 中安装共享。
如果我从命令行(下面的命令)安装共享,它就可以正常安装。
sudo mount -t cifs -o username=username,vers=3.0 //192.168.1.116/Share /mnt/Share/
但是,当我尝试在 fstab 中挂载共享(下面的命令)时,smb 共享未挂载。
//192.168.1.116/Share /mnt/Share cifs credentials=/home/user/.smbcredentials,vers=3.0,iocharset=utf8,sec=ntlmssp 0 0
做完sudo mount -a
并尝试后ls
我得到:
ls:无法访问“共享”:操作不受支持
当我这样做时,smbclient -L //192.168.1.116
我得到:
协议协商失败:NT_STATUS_INVALID_NETWORK_RESPONSE
更新:
当我做
sudo mount -t cifs -o credentials=/home/user/.smbcredentials,vers=3.0,iocharset=utf8,sec=ntlmssp //192.168.1.116/Share /mnt/Share/
SMB 共享已正确挂载。
当我做
smbclient -L //192.168.1.116 -d 0
我得到了相同的结果:
协议协商失败:NT_STATUS_INVALID_NETWORK_RESPONSE。
dmesg -t | grep -e CIFS
返回:
CIFS VFS:cifs_mount 失败,返回代码 = -95
当我打开调试检查 dmesg 时,我收到很多信息:
/build/linux-Dh1oQA/linux-4.4.0/fs/cifs/cifsfs.c: CIFS VFS: 在 cifs_statfs 中 Xid 为:9405245,uid 为:1000
/build/linux-Dh1oQA/linux-4.4.0/fs/cifs/cifsfs.c: CIFS VFS:离开 cifs_statfs (xid = 9405245) rc = -95
/build/linux-Dh1oQA/linux-4.4.0/fs/cifs/inode.c: CIFS VFS: 在 cifs_revalidate_dentry_attr 中为 Xid: 9405247,uid: 1000
/build/linux-Dh1oQA/linux-4.4.0/fs/cifs/inode.c: CIFS VFS:离开 cifs_revalidate_dentry_attr(xid = 9405247)rc = -95
答案1
您会尝试使用 smblient 进行调试吗?
smbclient -L //192.168.1.116 -d 0
您是否能够使用 fstab 中的选项和凭据文件通过命令行进行挂载?
sudo mount -t cifs -o credentials=/home/user/.smbcredentials,vers=3.0,iocharset=utf8,sec=ntlmssp //192.168.1.116/Share /mnt/Share/
您在 dmesg 中看到了哪些有关 CIFS 的错误?
dmesg -t | grep -e CIFS
我们还可以启用 cifs 模块的调试。
modprobe cifs
echo 'module cifs +p' > /sys/kernel/debug/dynamic_debug/control
echo 'file fs/cifs/* +p' > /sys/kernel/debug/dynamic_debug/control
echo 7 > /proc/fs/cifs/cifsFYI
并使用禁用它。
echo 0 > /proc/fs/cifs/cifsFYI
还请检查 dmesg 中的 cifs 模块调试输出。
答案2
不确定发生了什么,但我能够解决这个问题。
我决定重新开始,并执行了 sudo umount /mnt/Share(s)。卸载每个目录后,我准备使用 sudo mount -a,让 fstab 中的挂载点全部正确挂载。
线索来自一个不再可用的答案。答案作者(如果我没记错的话@heynnema)要求我将挂载放入file_mode=0777,dir_mode=0777
我的 fstab 中。
今天早上我仔细检查后发现目录被突出显示了。快速ls -l
显示它是 777,这不对。我无法通过调整 fstab 来更改它,所以我想我应该重新开始。看来这次成功了。
最后我添加了我的;
smb.conf 文件
min client protocol = NT1
max client protocol = SMB3
/etc/fstab
vers=3.0
即使最小客户端协议 = NT1,也需要 vers=3.0。