atl*_*fed 4 mount samba cifs smb
使用最新的 Ubuntu 服务器:Ubuntu 20.04.1 LTS 我能够使用以下命令从本地 Fritz Box 路由器成功挂载 SMB 共享卷:
mount -t cifs //fritz.box/fritz.nas/wd -o rw,vers=3,username=user,password=password,workgroup=WORKGROUP
Run Code Online (Sandbox Code Playgroud)
挂载点的权限:
drwxr-xr-x 2 root root
Run Code Online (Sandbox Code Playgroud)
安装后复制到驱动器的测试文件的权限:
-rwxr-xr-x 1 root root 4 Aug 7 13:05 test.txt
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试查看文件的内容时:
test.txt: Stale file handle
Run Code Online (Sandbox Code Playgroud)
编辑还说[权限被拒绝]
尝试读取文件后 DMESG 输出:
[14540.364844] CIFS VFS: bogus file nlink value 0
Run Code Online (Sandbox Code Playgroud)
我尝试了各种权限、用户、安装选项和不同的 CIFS 版本,但结果都相同。
我无法恢复到 SMBv1,因为共享不支持它。
共享安装在其他系统(例如 MacOSX)上没有问题,并且我可以读/写。
最终我找到了这个德语页面:
https://debianforum.de/forum/viewtopic.php?t=176154
解决办法是添加参数noserverino:
mount -t cifs //fritz.box/fritz.nas/wd -o rw,noserverino,username=user,password=password,workgroup=WORKGROUP
Run Code Online (Sandbox Code Playgroud)
来自 man mount.cifs:
客户端自己生成 inode 编号,而不是使用服务器中的实际编号。
使用指定用户在 /etc/fstab 中完全挂载命令:
//fritz.box/fritz.nas/wd /home/user/wd cifs rw,noserverino,username=user,password=password,uid=user,gid=user,workgroup=WORKGROUP 0 0
Run Code Online (Sandbox Code Playgroud)
确保安装点所有者已设置:
chown user:user /home/user/wd/
Run Code Online (Sandbox Code Playgroud)