有时我们的一些重要的文件或目录,不希望被误删除或者修改,我们可以对其加上特殊的属性使其不可修改。。
如果遇到root权限下,删除文件也也被提示无权限“Operation not permitted”,那么你可以查看一下文件是否被设置为不可修改的属性。
chattr
(Change Attribute 的缩写)命令就是Linux改变文件属性的命令。
对应地,lsattr
命令可以列出文件的属性。
chattr的用法如下:
1 2 3 4 5 6 7 8 9 10 11 |
chattr - change file attributes on a Linux file system 用法概要: chattr [ -RVf ] [ -v version ] [ -p project ] [ mode ] files... 最常用的参数包括: -R 对一个目录及其子目录的属性修改 操作符 +,追加指定属性到文件已存在属性中 操作符 -,删除指定属性 关键属性,我一般最常用的就是i(不可修改), A file with the 'i' attribute cannot be modified。 |
对于lsattr 就是更简单一些了,只是列出文件的属性。
实例操作
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
[jay@my-host:/tmp] $touch a.txt [jay@my-host:/tmp] $sudo chattr +i a.txt [jay@my-host:/tmp] $lsattr a.txt ----i---------e---- a.txt # 这里有一个 i 属性 [jay@my-host:/tmp] $rm -f a.txt rm: cannot remove ‘a.txt’: Operation not permitted # 删除文件失败了 [jay@my-host:/tmp] $sudo rm -f a.txt rm: cannot remove ‘a.txt’: Operation not permitted # root账号也删除文件失败了 [jay@my-host:/tmp] $sudo chattr -i a.txt [jay@my-host:/tmp] $lsattr a.txt --------------e---- a.txt # 属性 i 应去掉了 [jay@my-host:/tmp] $rm -f a.txt |
完整属性
chattr 提供不同的属性,也就是 aAcCdDeijsStTu。每个字符代表一个特定文件属性。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
a – 只能向文件中添加数据 A – 不更新文件或目录的最后访问时间 c – 将文件或目录压缩后存放 C – 不适用写入时复制机制(CoW) d – 设定文件不能成为 dump 程序的备份目标 D – 同步目录更新 e – extend 格式存储 i – 文件或目录不可改变 j – 设定此参数使得当通过 mount 参数:data=ordered 或者 data=writeback 挂载的文件系统,文件在写入时会先被记录在日志中 P – project 层次结构 s – 安全删除文件或目录 S – 即时更新文件或目录 t – 不进行尾部合并 T – 顶层目录层次结构 u – 不可删除 |