Ubuntu 22.04挂载CIFS文件夹后文件管理器复制生成0字节文件的问题
Ubuntu 22.04挂载CIFS文件夹后文件管理器复制生成0字节文件的问题
看起来你碰到了一个挺棘手的CIFS挂载兼容性问题——在Ubuntu 22.04(6.5.0-28-generic内核)上挂载公司域控的CIFS共享后,用Nautilus、Dolphin这类文件管理器复制文件时,目标文件始终是0字节的空文件,但用终端的cp命令却能正常完成复制,而且切换到旧版本内核6.5.0-26-generic后,问题就消失了。针对这个情况,我整理了几个可以尝试的解决方向:
调整CIFS挂载参数,适配文件管理器的写入逻辑
文件管理器和终端cp的文件写入策略可能存在差异,你可以尝试在fstab的挂载行中添加几个参数来规避这个问题:- 指定SMB协议版本:比如添加
vers=3.0(或者vers=2.1,根据你的域控支持的版本选择),新内核可能对SMB协议的默认处理有变化,明确指定版本能减少兼容性问题。 - 关闭缓存:添加
cache=none,避免文件管理器的缓存机制和CIFS挂载的缓存冲突。
修改后的fstab挂载行示例:
//dc.domain.lan/serverfile /home/user/SERVER/ cifs credentials=/home/user/credfile.txt,users,iocharset=utf8,gid=1000,uid=1000,file_mode=0777,dir_mode=0777,noexec,vers=3.0,cache=none 0 0修改完成后,执行
sudo mount -a重新挂载共享,再测试文件管理器的复制功能。- 指定SMB协议版本:比如添加
查看内核CIFS模块的日志,定位具体报错
你可以通过内核日志来排查文件管理器复制失败时的具体问题:- 执行
dmesg | grep cifs或者journalctl -k | grep cifs,查看挂载共享和尝试复制文件时的日志输出,重点关注是否有写入权限、协议交互相关的错误信息。 - 建议在文件管理器复制文件前后分别抓取日志,对比差异,这样更容易定位到触发问题的具体操作。
- 执行
临时回退到可用内核作为过渡方案
既然6.5.0-26-generic内核可以正常工作,你可以设置GRUB默认引导这个内核,直到新内核的CIFS问题被修复:- 执行
grep menuentry /boot/grub/grub.cfg,找到6.5.0-26-generic对应的内核条目名称(注意要包含完整的菜单文本)。 - 编辑
/etc/default/grub,修改GRUB_DEFAULT为刚才找到的条目名称,比如GRUB_DEFAULT="Ubuntu, with Linux 6.5.0-26-generic"。 - 执行
sudo update-grub更新GRUB配置,下次开机就会默认进入这个内核。
- 执行
提交内核Bug报告,帮助修复问题
由于你没找到其他用户遇到相同问题,这很可能是6.5.0-28-generic内核中CIFS模块的一个新bug。你可以在Ubuntu的Bug追踪平台提交报告,附上以下信息:- 你的系统版本、内核版本
- 完整的fstab挂载参数
- 文件管理器复制失败时的内核日志
cp命令正常、文件管理器异常的对比信息
这些信息能帮助开发者更快定位并修复问题。
备注:内容来源于stack exchange,提问作者Tiziano Pedrazzoli
相关产品推荐
相关产品推荐

