Linux 中的 chattr 命令,用来修改文件或目录的隐藏属性,只有 root 用户可以使用。其中,+ 表示给文件或目录添加属性,- 表示移除文件或目录拥有的某些属性,= 表示给文件或目录设定一些属性。
chattr 命令共有八种模式,如下表:
模式 | 描述 |
---|---|
a | 让文件或目录仅供附加用途。 |
b | 不更新文件或目录的最后存取时间。 |
c | 将文件或目录压缩后存放。 |
d | 将文件或目录排除在倾倒操作之外。 |
i | 不得任意更动文件或目录。 |
s | 保密性删除文件或目录。 |
S | 即时更新文件或目录。 |
u | 预防意外删除。 |
chattr 命令用于改变文件属性。
chattr [+-=] [属性] file
参数 | 描述 |
---|---|
-R | 递归处理,将指定目录下的所有文件及子目录一并处理。 |
-v<版本编号> | 设置文件或目录版本。 |
-V | 显示指令执行过程。 |
+<属性> | 开启文件或目录的该项属性。 |
-<属性> | 关闭文件或目录的该项属性。 |
=<属性> | 指定文件或目录的该项属性。 |
实例 | 描述 |
---|---|
chattr +i file | 文件不能删除,不能更改,不能移动。 |
chattr +a file | 让某个文件只能往里面追加数据,但不能删除。 |
chattr -i file | 表示解除文件锁定。 |
chattr +i file
我们使用 touch 命令,创建一个 haicoder.txt 文件,具体命令如下:
touch haicoder.txt
运行后,终端输出如下:
现在,我们使用 ls 命令,查看文件 haicoder.txt 的权限,具体命令如下:
ls -l haicoder.txt
运行后,终端输出如下:
现在,我们使用 chattr 命令为其增加 i 权限,具体命令如下:
chattr +i haicoder.txt
运行后,终端输出如下:
现在,我们再次使用 lsattr 命令,查看其权限,具体命令如下:
lsattr haicoder.txt
运行后,终端输出如下:
我们看到,现在文件 haicoder.txt 有 i 属性,现在,我们使用 rm 命令,删除该文件,具体命令如下:
rm -rf haicoder.txt
运行后,终端输出如下:
我们看到,文件无法删除,因为,我们为其增加了 i 属性。
chattr -i file
我们使用 lsattr 命令,查看其权限,具体命令如下:
lsattr haicoder.txt
运行后,终端输出如下:
我们看到,现在文件 haicoder.txt 有 i 属性,现在,我们再次使用 chattr 命令,删除该文件的 i 属性,具体命令如下:
chattr -i haicoder.txt
运行后,终端输出如下:
现在,我们再次使用 lsattr 命令,查看其权限,具体命令如下:
lsattr haicoder.txt
运行后,终端输出如下:
我们看到,此时文件的 i 属性不存在了,现在,我们可以使用 rm 命令,删除该文件,具体命令如下:
rm -rf haicoder.txt
运行后,终端输出如下:
即,我们现在,可以删除该文件了。
Linux 中的 chattr 命令,用来修改文件或目录的隐藏属性,只有 root 用户可以使用。其中,+ 表示给文件或目录添加属性,- 表示移除文件或目录拥有的某些属性,= 表示给文件或目录设定一些属性。