飞牛 fnOS 远程挂载恢复后残留目录无法删除:immutable 属性排查记录

飞牛 fnOS 远程挂载恢复后残留目录无法删除:immutable 属性排查记录
背景
之前在飞牛 NAS(fnOS)中尝试了远程挂载功能,将夸克云盘等网盘通过系统远程挂载映射到本地文件系统。
参考飞牛社区方案,通过修改:
/etc/mountmgr/mount_info.json
中的 mountPoint 参数,将系统默认生成的远程挂载路径调整到用户目录下,例如:
/vol1/1000/_quarkCloudDrive
这样可以让远程挂载目录直接显示在“我的文件”中,也方便 Docker 等应用调用。
后来恢复原来的远程挂载配置并删除相关挂载后,本地残留了一个目录:
/vol1/1000/_quarkCloudDrive
尝试删除时,却遇到了权限问题。
问题现象
执行:
rmdir /vol1/1000/_quarkCloudDrive
提示:
rmdir: failed to remove '/vol1/1000/_quarkCloudDrive': Operation not permitted
由于当前已经是 root 用户,因此首先排除了普通文件权限不足的问题。
继续检查磁盘挂载状态:
mount | grep /vol1
结果类似:
/dev/mapper/xxx on /vol1 type ext4 (rw,relatime,prjquota,stripe=256)
可以确认:
- 文件系统为 ext4;
- 当前挂载参数为
rw,具备读写权限; - 因此不是磁盘只读导致无法删除。
查找真正原因
使用 lsattr 查看目录属性:
lsattr -d /vol1/1000/_quarkCloudDrive
返回:
----i---------e----P-- /vol1/1000/_quarkCloudDrive
其中最关键的是:
i
这个标志表示目录设置了 immutable(不可变)属性。
Linux 文件或目录设置 immutable 属性后,即使当前用户是 root,也不能:
- 删除文件或目录;
- 修改文件内容;
- 重命名;
- 移动文件或目录。
因此,直接执行:
rm -rf /vol1/1000/_quarkCloudDrive
同样会失败。
解决方法
1. 移除 immutable 属性
执行:
chattr -i /vol1/1000/_quarkCloudDrive
然后再次检查:
lsattr -d /vol1/1000/_quarkCloudDrive
确认输出中已经没有 i 标志。
2. 删除残留目录
确认属性已清除后,执行:
rm -rf /vol1/1000/_quarkCloudDrive
目录即可正常删除。
如果目录内部文件也被锁定
如果清除目录属性后仍然删除失败,可以递归检查目录内部的文件:
lsattr -R /vol1/1000/_quarkCloudDrive | grep i
如果发现大量文件带有 i 属性,可以递归移除:
chattr -R -i /vol1/1000/_quarkCloudDrive
然后再次执行:
rm -rf /vol1/1000/_quarkCloudDrive
总结
这次问题并不是:
- root 权限不足;
- ext4 文件系统只读;
- NAS ACL 限制。
本次实际原因是:远程挂载处理后,残留目录被设置了 immutable 属性。
排查 Linux 中“root 用户也无法删除”的文件或目录时,可以按照下面的顺序检查:
# 查看普通权限
ls -ld 目录
# 查看文件属性
lsattr -d 目录
# 查看挂载状态
mount | grep 路径
# 清除 immutable 属性
chattr -i 目录
# 删除目录
rm -rf 目录
对于使用飞牛 NAS 远程挂载、自定义挂载路径的用户,如果恢复配置后发现残留目录无法删除,可以优先检查 lsattr 输出中是否存在 i 标志。
环境记录
- 系统:飞牛 fnOS
- 文件系统:ext4
- 场景:远程挂载网盘并映射到本地目录
- 问题目录:
/vol1/1000/_quarkCloudDrive - 根因:immutable attribute(
i) - 解决命令:
chattr -i
版权声明:本文为YES开发框架网发布内容,转载请附上原文出处连接
post MCP自动发表文章


