自从更新到 Ubuntu 17.10 以来,我的用于从 NAS 挂载共享的脚本不再起作用。在旧版本的 Ubuntu 上,我可以使用以下行:
mount -t cifs -o username=t0b1,password=$pw //server.local/shared/ /media/shared
添加另一个选项来指定版本似乎并没有改变任何东西:
mount -t cifs -o vers=1.0, username=t0b1,password=$pw //server.local/shared/ /media/shared
当我在 Ubuntu 17.10 上运行脚本时,我得到的唯一输出是“mount”选项列表,但它没有挂载我的共享。有人知道 17.10 上的 cifs 到底发生了什么变化吗?知道我可以在这里更改什么吗?
编辑:这一行确实有效:
mount -t cifs -o username=t0b1,password=$pw,vers=1.0 //server.local/shared/ /media/shared
但我认为使用 1.0 版本只是一种临时解决办法,因为它存在一些已知的安全问题。应该还有一种方法可以让它与 3 版本一起运行。
答案1
升级到 Ubuntu 17.10 后,我遇到了同样的问题。突然,我的 CIFS 共享无法再挂载。添加vers=1.0
挂载选项后,这个问题就解决了。诚然,这有点儿不妥,但有网络共享访问总比没有网络共享访问好。
我的/etc/fstab
文件底部之前有以下 4 行:
# Network File Shares
//phc.imsu.ox.ac.uk/phc /mnt/PHC cifs credentials=/home/benjamin/.smbcredentials,iocharset=utf8,sec=ntlm,dir_mode=0777,file_mode=0777 0 0
//phc.imsu.ox.ac.uk/departments /mnt/DEPARTMENTS cifs credentials=/home/benjamin/.smbcredentials,iocharset=utf8,sec=ntlm,dir_mode=0777,file_mode=0777 0 0
//femur.imsu.ox.ac.uk/phc_cprd /mnt/PHC_CPRD cifs credentials=/home/benjamin/.smbcredentials,iocharset=utf8,sec=ntlm,dir_mode=0777,file_mode=0777 0 0
将其更改为:
# Network File Shares
//phc.imsu.ox.ac.uk/phc /mnt/PHC cifs credentials=/home/benjamin/.smbcredentials,iocharset=utf8,sec=ntlm,dir_mode=0777,file_mode=0777,vers=1.0 0 0
//phc.imsu.ox.ac.uk/departments /mnt/DEPARTMENTS cifs credentials=/home/benjamin/.smbcredentials,iocharset=utf8,sec=ntlm,dir_mode=0777,file_mode=0777,vers=1.0 0 0
//femur.imsu.ox.ac.uk/phc_cprd /mnt/PHC_CPRD cifs credentials=/home/benjamin/.smbcredentials,iocharset=utf8,sec=ntlm,dir_mode=0777,file_mode=0777,vers=1.0 0 0
问题已解决。
答案2
尝试这个:
mount -t cifs -o vers=1.0,username=t0b1,password=$pw //server.local/shared/ /media/shared
也就是说,和你第一次尝试的一样,但没有空格。选项中不允许使用它们。这可能是挂载看不到用户名和密码的原因。
答案3
2018 年 2 月 5 日,我在 Ubuntu 17.0 上使用的挂载选项组合是:
用户名 = guessmyusername,密码 = guessmypassword,iocharset = utf8,sec = ntlmv2,vers = 2.1
它们与 /etc/fstab 中的挂载点以及 mount-t cifs 命令一起工作。
自从版本 1 以来,CIFS 协议的变化已经让我们中的很多人感到困惑。我怀疑随着时间的推移,sec 和 version 的值将变得陈旧,但是当您无法从 Linux 连接到 Windows 共享但可以从 Windows 连接时,更新它们可能是答案。
旧帖子中的许多建议都表明您应该使用 sec=ntlm。我花了一段时间才找到提到 ntlmv2 的内容。其他人说您应该使用 vers=1.0(非常过时且不安全)
该服务器是一台运行 Windows 10 的笔记本电脑。检查后发现,服务器使用的是 CIFS 3.1.1。当然,我尝试了。但没有成功。我使用 ntlmv2 恢复到 2.1,一切开始正常工作。
不起作用的不同 sec 和 version 参数组合会显示不同的错误消息,有些会产生误导,有些已经过时,有些则只是隐晦的。
不管挂载失败时出现什么消息,这里唯一的问题是安全协商未完成。指示资源不可用的消息显然是指安全协商的一个组件,而不是您尝试连接的共享。
此外,终端中显示的消息和使用 dmesg|grep CIFS 找到的消息不同。我需要查看两者才能弄清楚发生了什么。
尝试过的事情:
dmesg|grep CIFS 查看错误消息 使用 /etc/fstab 和 sudo mount -a 挂载共享(现在可用) 使用 mount -t CIFS ...(现在也可用)
答案4
这是我尝试过的方法。经过多次尝试。
彻底清除后,我重新安装了所有客户端
$ sudo apt install cifs-utils smbclient nfs-common
然后创建并挂载点。
$mkdir ~/myfiles
然后按如下方式挂载:
sudo mount -t cifs -o vers=1.0,credentials=/home/username/.smbcredentials,dir_mode=0777,file_mode=0777 //192.168.2.5/g$/shares/Techno\ Files /home/<username>/myfiles/
我的罪魁祸首是路径(Windows 服务器上的驱动器)。例如。加拿大元、加拿大元、加拿大,然后是文件路径。Ubuntu 文档指出您应该使用\040\
eg转义空格new\040Folder
,但对我来说它失败了。所以我采用了传统的 Unix 空格转义。