无法使用 cifs 挂载打开文件进行写入

Aly*_*Aly 5 mount smb fstab cifs ubuntu

嗨,我已使用以下 fstab 条目将我的 QNAP 安装到我的 ubuntu 机器上的驱动器上

//<ip-address>/Documents/Aly /home/aly/Documents cifs credentials=/root/.credentials,uid=1000,gid=1000,rw,hard,dir_mode=0777,file_mode=0777 0 0
Run Code Online (Sandbox Code Playgroud)

这提供了以下权限:

drwxrwxrwx  1 aly aly    0 2011-12-03 12:18 .
drwxr-xr-x 13 aly aly 4096 2011-12-03 12:14 ..
-rwxrwxrwx  1 aly aly    5 2011-12-03 11:55 test.tst
drwxrwxrwx  1 aly aly    0 2011-11-26 17:54 VirtualBox VMs
Run Code Online (Sandbox Code Playgroud)

我有删除文件和添加文件的权限,但是在尝试写入文件时,即 test.tst 我在 vi 中收到以下错误:

"test.tst" E212: Can't open file for writing
Run Code Online (Sandbox Code Playgroud)

以前有没有人见过这个,如果我通过 nfs 挂载驱动器,这不是问题,但是 nfs 缺乏我想要的安全性。

编辑

我得到的解决方案是:

<ip-address>:Documents/Aly/ /home/aly/Documents cifs hard,noperm,nouid,credentials=/root/.credentials,iocharset=utf8,file_mode=0777,dir_mode=0777,nodfs 0 0
Run Code Online (Sandbox Code Playgroud)

har*_*ymc 5

您可以尝试使用该nodfs参数(如果支持),如文章
如何解决 DNS323 NAS 上的 DFS samba 错误?

首先,这是一个快速的错误描述:无法修改任何现有文件。尝试修改文件时会出现“不是目录”或“没有此类文件或目录”或“触摸:设置时间...”错误。

如果您的 linux cifs 或 smbfs 客户端支持 nodfs 标志(集成在内核 > 2.6.27 中)。您只需将此选项添加到 mount 命令即可。例子:

mount -t cifs -o credentials=/home/kerphi/.smb-zekra-credentials,iocharset=utf8,file_mode=0777,dir_mode=0777,nodfs //zekra/Volume_1 /home/kerphi/zekra
Run Code Online (Sandbox Code Playgroud)

如果您无法升级内核(像我一样,因为我正在关注 debian 版本),则必须遵循以下解决方法:

  • 使用 Web GUI 和 goto tools?system 连接到 DNS323。
  • 将配置保存到您的工作站(在“配置设置”部分)。
  • 保存后编辑文件并在此行下
    ;[ global ]
    添加以下行:
    msdfs root = no
    然后通过 Web 界面上传此文件,您的 NAS 将重新启动,您将能够再次修改现有文件!

这在CIFS: Add nodfs mount option 中有进一步解释:

如果使用 DFS 路径,则较旧的 samba 服务器(例如来自 Debian etch 的 3.0.24)无法正常工作。此类服务器声称他们支持 DFS,但无法处理一些带有 DFS 路径的请求。从 Linux 2.6.26 开始,cifs 客户端在这种情况下开始发送 DFS 路径,使其无法用于较旧的 samba 服务器。

nodfs 挂载选项强制共享与非 DFS 路径一起使用,即使服务器声称它支持它。