为了防止在 Linux
系统中意外删除一些重要文件或目录,除了必要的备份之外,还有一个好方法,就是使用chattr
命令。
chattr(Change
Attribute)命令
在类 Unix
等发行版中,该命令能够有效防止文件和目录被意外的删除或修改。file 文件在
Linux 中被描述为一个数据结构,chattr 命令在大多数现代 Linux
操作系统中是可用的,可以修改file属性,一旦定义文件的隐藏属性,那么该文件的拥有者和
root 用户也无权操作该文件,只能解除文件的隐藏属性。
命令语法
chattr [operator] [switch] [file]
operator 具有如下操作符:
- 操作符
+
,追加指定属性到文件已存在属性中
- 操作符
-
, 删除指定属性
- 操作符
=
,直接设置文件属性为指定属性
switch
常用属性指令如下
1 2 3 4 5 6 7 8
| a:让文件或目录仅供附加用途; b:不更新文件或目录的最后存取时间; c:将文件或目录压缩后存放; d:将文件或目录排除在倾倒操作之外; i:不得任意更动文件或目录; s:保密性删除文件或目录; S:即时更新文件或目录; u:预防意外删除。
|
其它参数
- -R:递归处理,将指令目录下的所有文件及子目录一并处理;
- -v<版本编号>:设置文件或目录版本;
- -V:显示指令执行过程
设置文件不能被改名,移动删除,增删数据
1 2 3 4 5 6
| lsattr rumenz.txt ---------------- rumenz.txt
chattr +i rumenz.txt lsattr rumenz.txt ----i----------- rumenz.txt
|
尝试修改文件
1 2
| echo "rumenz.com" rumenz.txt -bash: rumenz.txt: Permission denied
|
提示没有权限
删除特殊i
权限
设置目录不能建立,移动和删除文件
1 2 3 4 5 6 7 8 9 10
| mkdir rumenz && touch rumenz/1.txt tree . └── rumenz └── 1.txt lsattr rumenz/ ---------------- rumenz/1.txt chattr +i -R rumenz/ lsattr rumenz/ ----i----------- rumenz/1.txt
|
在rumenz
目录下创建目录
1 2
| mkdir rumenz/one mkdir: cannot create directory ‘rumenz/one’: Permission denied
|
提示权限不足
在rumenz/1.txt
文件中添加数据
1 2
| echo "rumenz.com" rumenz/1.txt -bash: rumenz/1.txt: Permission denied
|
删除特殊i
权限
设置文件只能添加数据,不能修改,删除,移动该文件
1 2 3 4 5
| lsattr rumenz.txt ---------------- rumenz.txt chattr +a rumenz.txt lsattr rumenz.txt -----a---------- rumenz.txt
|
修改rumenz.txt文件内容
1 2 3
| echo "rumenz.com" rumenz.txt -bash: rumenz.txt: Operation not permitted echo "rumenz.com" >rumenz.txt
|
修改覆盖rumenz.txt
文件内容不行,向后追加可以。
修改文件名
1 2
| mv rumenz.txt one.txt mv: cannot move ‘rumenz.txt’ to ‘one.txt’: Operation not permitted
|
提示权限不足
设置rumenz
目录下只能添加目录,文件,但是不能对里面的文件夹,文件修改,移动,删除。
1 2 3
| chattr +a -R rumenz lsattr rumenz/ -----a---------- rumenz/1.txt
|
在rumenz
目录下创建one
将rumenz/one
目录重命名
1 2
| mv rumenz/one rumenz/tow mv: cannot move ‘rumenz/one’ to ‘rumenz/tow’: Operation not permitted
|
在rumenz
目录下创建文件
1 2 3
| touch rumenz/3.txt ls rumenz/ 1.txt 3.txt one
|
不能删除rumenz/3.txt
文件
1 2
| rm -rf rumenz/3.txt rm: cannot remove ‘rumenz/3.txt’: Operation not permitted
|
不能被删除
可以修改rumenz/3.txt
文件内容
1 2 3
| echo "rumenz.com" rumenz/3.txt cat rumenz/3.txt rumenz.com
|