我有一台 NAS(Western Digital“My Book”)。我通过 USB 将其连接到我的 TP-Link 路由器。它在 TP-Link 路由器 GUI 中显示无问题。
在我的 Ubuntu 20.04 上,我使用文件管理器连接到它
smb://10.0.0.1/
以及 TP-Link 路由器所需的用户 ID/密码。一切正常。我可以创建文件和文件夹,也可以删除文件和文件夹,没有问题。
我还在“文件”应用中打开了驱动器。然后右键单击名为“备份”的目录并选择“在终端中打开”,它就成功了。该终端中的工作目录是:
$ pwd
/run/user/1000/gvfs/smb-share:server=10.0.0.1,share=g/backups
所以这部分也行得通。太好了。
现在,我想挂载驱动器(永久挂载,因此还需要一个 fstab 条目)。在网上搜索后,我发现可以使用:
sudo apt install cifs-utils
sudo apt install keyutils
sudo mkdir -p /mybook
sudo mount -t cifs //10.0.0.1/g -o user=xxx,pass=yyy,vers=2.1 /mybook
我得到:
mount error(2): No such file or directory
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs) and kernel log messages (dmesg)
dmesg 说:
[552171.204549] CIFS: Attempting to mount //10.0.0.1/g
[552171.214272] CIFS VFS: cifs_mount failed w/return code = -2
在网上搜索后,很多人说这个方法对他们有用。所以我做错了。
以下是我尝试过的其他一些方法:
- 设置文件管理器连接和未连接时,同样失败
- 在 Ubuntu 22.04 上尝试过,同样失败
- 尝试了 vers=2.0、1.9 和其他一些版本;没有错误,dmesg 中没有警告,但 /mybook 中没有文件或文件夹
- 尝试使用 smb://10.0.0.1/g,但出现有关“smb”的警告,但这是意料之中的,解决方法是使用 //10.0.0.1/g
- 已尝试 //10.0.0.1(即没有“G:”驱动器),“安装错误(22):参数无效”
- 尝试了“-v”,在输出中多出了一行,不知道为什么是“没有这样的文件或目录”
- 将“/mybook”参数移至不同位置,没有任何效果
- 添加尾部斜杠“/mybook/”和“//10.0.0.1/g/”,没有任何效果。
- 添加“,domain = WORKGROUP”没有任何效果。
- 还尝试了“dom=tplink”,即 tp-link 路由器中指定的“服务器名称”。没有成功。
有什么想法可以让我尝试吗?
更新:这几乎有效:
sudo mount smb://10.0.0.1/g
sudo ln -s "/run/user/1000/gvfs/smb-share:server=10.0.0.1,share=g" /mybook2
cd mybook2
当我尝试创建一个文件(“touch x.txt”)时,我得到:
/mybook2$ touch x.txt
touch: setting times of 'x.txt': Permission denied
但是 x.txt 确实存在并且时间确实设置了:
$ ll x.txt
-rwx------ 1 myuser myuser 0 Jan 19 21:12 x.txt*
我尝试使用 sudo。这次文件没有被创建:
rm x.txt
$ sudo touch x.txt
touch: cannot touch 'x.txt': Permission denied
ll x.txt
$ ll x.txt
ls: cannot access 'x.txt': No such file or directory
请注意,创建目录就可以了:
mkdir x
ll .
显示目录已创建并且时间设置正确。
请注意,“gedit x.txt” 也运行正常。没有关于时间的警告。
但 rsync 也收到同样的警告:
rsync -a ~/Documents/ /mybook2/Documents/
rsync: failed to set times on "/mybook2/Documents/.": Is a directory (21)
rsync: failed to set times on "/mybook2/Documents/Fritzing": Is a directory (21)
etc.
更新:尝试了以下操作:
sudo nano /etc/fstab
//10.0.0.1/g /mybook cifs username=xxx,password=yyy,rw,uid=1000,gid=500,vers=3.0
sudo mount -a
收到错误:
mount error(2): No such file or directory
dmesg
[605786.944989] CIFS: Attempting to mount //10.0.0.1/g
[605786.953870] CIFS VFS: cifs_mount failed w/return code = -2
- 尝试过使用和不使用“/g”
- 尝试过 vers=2.0 和 vers=3.0
- 创建了一个子目录
mkdir /mybook/g
,并尝试使用 '//10.0.0.1/g' 和 '//10.0.0.1' 和 '//10.0.0.1/' 进行 fstab。所有操作都以同样的方式失败 - 尝试了“/g”和“/G”无济于事
更新:尝试删除 vers= 选项:
当前 fstab 是
//10.0.0.1/g /mybook cifs username=xxx,password=yyy,rw,uid=1000,gid=500
我在 dmesg 中收到此警告:
No dialect specified on mount. Default has changed to a more secure dialect, SMB2.1 or later (e.g. SMB3), from CIFS (SMB1). To use the less secure SMB1 dialect to access old servers which do not support SMB3 (or SMB2.1) specify vers=1.0 on mount.
CIFS VFS: cifs_mount failed w/return code = -2
请注意,ubuntu 版本有点过时:
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 20.04.6 LTS
Release: 20.04
Codename: focal
答案1
您添加到 /etc/fstab 的内容似乎没问题。要挂载我的 Synology NAS 的 cifs 共享的目录“public”,/etc/fstab 行如下所示://192.168.1.122/public /mnt/synology_disk cifs vers=2.0,credentials=/home/xxxx/.smbcredentials,uid=1000,gid=1000,forceuid,forcegid 0 0 参数 forceuid 和 forcegid 覆盖 NAS 中文件的所有权信息。最后两个位置参数设置为 0,以禁用 dump 命令处理挂载数据,并禁用挂载共享的文件系统检查。