![如何挂载 CIFS 共享以便它不会警告外部文件修改](https://linux22.com/image/832817/%E5%A6%82%E4%BD%95%E6%8C%82%E8%BD%BD%20CIFS%20%E5%85%B1%E4%BA%AB%E4%BB%A5%E4%BE%BF%E5%AE%83%E4%B8%8D%E4%BC%9A%E8%AD%A6%E5%91%8A%E5%A4%96%E9%83%A8%E6%96%87%E4%BB%B6%E4%BF%AE%E6%94%B9.png)
这是挂载的当前 fstab 条目。
//qnap/share /data cifs noauto,user,username=qnap,uid=1000,gid=1000 0 0
这种方法运行良好并且大多数时候没有任何问题。
但是,当使用某些软件(例如:gedit 等基本文本编辑器或 PhpStorm 等更高级的应用程序)打开共享上的文件时,软件会不时报告“外部文件更改通知”。
文件时间戳或大小没有改变,并且此计算机和 NAS 都具有由 NTP 设置的相同时间。
有人知道是什么触发了诸如 gedit 之类的基本 Linux 文本编辑应用程序中的这些“外部文件更改”通知吗?
有人知道一些可以帮助解决这个问题的不同挂载标志吗?
我对修复很感兴趣,也对了解在较低级别上发生了什么以触发这些通知感兴趣。
谢谢,戴夫
答案1
在您fstab
的
//qnap/share /data cifs username=qnap,password=<your_pass>,_netdev,uid=1000,gid=1000 0 0
在 的位置插入您的密码,并注意_netdev
。对于 fstab 中的 cifs 挂载,始终建议使用 _netdev 选项。此开关会延迟挂载,直到启用网络为止,但排除此选项不会造成问题。
出现警告是因为您在挂载过程中没有提供密码。
已经描述了一种类似但略有不同的方法(凭证存储在文件中,文件在 fstab 中引用的方式)这里。
编辑:noauto
如果您希望在登录而不是启动期间挂载,请使用(就像您所做的那样)。user
并且sync
选项也是可选的,请根据您的需要使用它们。
答案2
我在使用 Pluma (MATE Desktop 的 Gedit fork) 时遇到了同样的问题;这似乎是由于本地 GNU/Linux 机器 (纳秒) 和远程 Windows 机器 (FAT32 约为 2 秒) 之间的文件修改时间戳分辨率差异造成的。
当 Pluma 完成文件写入后,它会查询并记住文件的修改时间戳;在 CIFS 情况下,此信息会被缓存(因此会显示原始纳秒时间)。但随着时间流逝,缓存的属性过期,当 Pluma 再次尝试检查文件的时间戳以进行外部修改时,它会获取服务器端时间戳(即四舍五入到 2 秒分辨率);Pluma 将此解释为外部修改,并显示警告。
我通过阻止 CIFS 缓存文件属性解决了这个问题:actimeo=0
在以下位置指定选项fstab
:
//qnap/share /data cifs noauto,user,username=qnap,uid=1000,gid=1000,actimeo=0 0 0
所以当 Pluma 保存文件并读取时间戳时,它总是会获取已经四舍五入的服务端时间戳,从而不再给出烦人的消息。