0

0

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

尼克

尼克

发布时间:2026-02-06 14:57:55

|

630人浏览过

|

来源于php中文网

原创

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

linux如何设置文件只读属性_linux使用chattr防止误删【指南】

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 写入,但不能 truncateoverwrite。这时用 chattr +a file 更合适。加了 +a 的文件,只有 open(..., O_APPEND) 方式能写,其他所有写法(包括 echo > filevim 保存)都会失败,报错 Operation not permitted

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

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

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

ThinkAny
ThinkAny

一个RAG驱动的AI搜索引擎,由独立开发者idoubi开发

下载

解决办法只有一步:chattr -i file。别试图绕过,也不用改 chmod 或换用户,i 属性优先级高于所有 POSIX 权限。

  • 脚本中批量处理前,建议先 lsattr 扫描,避免对 +i 文件执行写操作导致中断
  • 某些备份工具(如 rsync --fake-super)遇到 +i 文件会跳过或报错,需提前清理属性

chattr 在容器和云盘里不一定管用

很多用户在 Docker 容器里运行 chattr +i 失败,报 Operation not permitted,即使用了 --privileged 也可能无效。这是因为容器默认禁用 CAP_LINUX_IMMUTABLE 能力,且底层存储驱动(如 overlay2)不透传 i 属性。同样,挂载的腾讯云 CFS、阿里云 NAS 或部分 SMB/CIFS 共享盘也不支持 chattr 扩展属性。

验证是否生效的最简方法:touch test && chattr +i test && rm test。如果 rm 成功,说明当前环境不支持 i 属性。

  • 生产环境关键文件加 +i 前,务必在同构环境(相同内核、相同文件系统、相同容器配置)中实测
  • 替代方案可考虑用只读挂载(mount -o remount,ro /path)或访问控制列表(setfacl -m u:untrusted:r-- file),但防护强度不如 +i

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
append用法
append用法

append是一个常用的命令行工具,用于将一个文件的内容追加到另一个文件的末尾。想了解更多append用法相关内容,可以阅读本专题下面的文章。

345

2023.10.25

python中append的用法
python中append的用法

在Python中,append()是列表对象的一个方法,用于向列表末尾添加一个元素。想了解更多append的更多内容,可以阅读本专题下面的文章。

1077

2023.11.14

python中append的含义
python中append的含义

本专题整合了python中append的相关内容,阅读专题下面的文章了解更多详细内容。

177

2025.09.12

vim保存退出命令
vim保存退出命令

vim是一个非常强大的文本编辑器,常用于Unix和Linux系统。它是从vi发展而来的,相比vi有许多改进和扩展。在vim中,保存并退出的命令是:wq"wq"这个命令是由两个部分组成的。其中,"w"表示写入文件,将所做的更改保存到磁盘;而"q"表示退出vim编辑器。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

267

2023.08.01

k8s和docker区别
k8s和docker区别

k8s和docker区别有抽象层次不同、管理范围不同、功能不同、应用程序生命周期管理不同、缩放能力不同、高可用性等等区别。本专题为大家提供k8s和docker区别相关的各种文章、以及下载和课程。

263

2023.07.24

docker进入容器的方法有哪些
docker进入容器的方法有哪些

docker进入容器的方法:1. Docker exec;2. Docker attach;3. Docker run --interactive --tty;4. Docker ps -a;5. 使用 Docker Compose。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

503

2024.04.08

docker容器无法访问外部网络怎么办
docker容器无法访问外部网络怎么办

docker 容器无法访问外部网络的原因和解决方法:配置 nat 端口映射以将容器端口映射到主机端口。根据主机兼容性选择正确的网络驱动(如 host 或 overlay)。允许容器端口通过主机的防火墙。配置容器的正确 dns 服务器。选择正确的容器网络模式。排除主机网络问题,如防火墙或连接问题。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

406

2024.04.08

docker镜像有什么用
docker镜像有什么用

docker 镜像是预构建的软件组件,用途广泛,包括:应用程序部署:简化部署,提高移植性。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

445

2024.04.08

1688阿里巴巴货源平台入口与批发采购指南
1688阿里巴巴货源平台入口与批发采购指南

本专题整理了1688阿里巴巴批发进货平台的最新入口地址与在线采购指南,帮助用户快速找到官方网站入口,了解如何进行批发采购、货源选择以及厂家直销等功能,提升采购效率与平台使用体验。

33

2026.02.06

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 8.6万人学习

Git 教程
Git 教程

共21课时 | 3.4万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号