Linux如何设置文件只读属性_Linux使用chattr防止误删【指南】-LINUX

chattr +i 是最硬的只读锁,连 root 也无法修改、删除或重命名该文件或目录,必须先 chattr -i 解锁;+a 则允许追加写入但禁止覆盖,适用于日志文件。

chattr +i 是最硬的只读锁,但 root 也能删

普通 chmod 设的只读(如 chmod 444 file)只能防普通用户写入,root 或拥有写权限的组仍可修改甚至删除。真要防误删,得用 chattr 加不可变属性:chattr +i file。加完后,连 root 都不能改、删、重命名、覆盖该文件——除非先 chattr -i 解锁。

注意:+i 对目录也生效,但效果不同:目录加 +i 后,无法新建、删除或重命名其中任何文件(哪怕文件本身没加 +i),相当于整个目录被“冻住”。

  • 必须用 root 权限执行 chattr,普通用户会报 Operation not permitted
  • lsattr file 可查看是否已设 i 属性;输出里带 i 字符即生效
  • ext4/xfs 等主流文件系统支持,但某些容器环境或 NFS 挂载点可能不支持 i 标志

chattr +a 适合日志类文件,允许追加但禁止覆盖

有些场景不需要完全锁死,比如日志文件——你希望程序能持续 append 写入,但不能 truncate 或 overwrite。这时用 chattr +a file 更合适。加了 +a 的文件,只有 open(..., O_APPEND) 方式能写,其他所有写法(包括 echo > file、vim 保存)都会失败,报错 Operation not permitted。

  • +a 不影响读取和删除(删除仍需父目录写权限)
  • 对目录设 +a,表示只允许在该目录中创建新文件,不允许删除或重命名已有文件
  • +a 和 +i 互斥,不能同时设置

误设 +i 后打不开文件?不是权限问题,是属性锁住了

常见现象:给配置文件加了 chattr +i,再用 vim 或 sed -i 修改时,提示 "file" [readonly] — not writable 或直接报 Operation not permitted。这不是 chmod 没设好,而是 chattr 的 i 属性在起作用——编辑器尝试 truncate+rewrite,被内核拦截了。

夏夕资源网专注于CMS网站模板,主流语言整站网站源码下载,网站建设相关教程分享,好用的软件素材整合下载,提供一站式便捷自助服务。
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 如遇到加密压缩包,默认解压密码为"zy.lucklyus.top",如遇到无法解压的请联系管理员!
夏夕资源网-网站模板_免费源码_资源素材 » Linux如何设置文件只读属性_Linux使用chattr防止误删【指南】-LINUX
在线时间:12:00 - 22:00
关注微信公众号:微信公众号
站长邮箱:[email protected]
  • 运营天数: 1393+
  • 资源总数: 47989+
  • 用户总数: 1+
  • 今日更新: 0+
  • 访问次数: 4019972+
  • 本周更新: 0+
  • 最后更新: 2026-03-16

本站指数

×
  • 运营天数: 1393+
  • 资源总数: 47989+
  • 用户总数: 1+
  • 今日更新: 0+
  • 访问次数: 4019972+
  • 本周更新: 0+
  • 最后更新: 2026-03-16