chattr 命令

📅  2017 年 3 月 19 日 📖  阅读时间 1 分钟

一个经常被忽视的命令

对于我个人来说,这个命令其实也不是特意去找来用的。
前段日子,在尝试使用 ss-panel 来搭建 FzVPN 的前端的时候,发现在用mv命令将 git clone 的文件夹文件转移到 vhost 文件夹的时候,总是没法将配置文件转移。
这让我觉得很奇怪,而且还无法通过rm -rf来删除。即使处于 root 权限之下,也会提示操作权限不够的错误。经过几番查找,最后尝试使用 chattr 命令去除了 i 属性成功转移。学习命令的同时,将查到的一些资料写下来备忘。

命令详解

命令格式

chattr [ -RVf ] [ -v version ] [ mode ] files

记忆方式:change-attribute

文件属性

属性值说明
a让文件或目录仅供附加用途
A锁定文件或目录的Access Time
b不更新文件或目录的最后存取时间
c将文件或目录压缩后存放
d将文件或目录排除在倾倒操作之外
i不得任意更动文件或目录
j文件在写入时会先被记录
s保密性删除文件或目录
S即时更新文件或目录
u预防意外删除

命令参数

参数说明
-R递归处理,将指令目录下的所有文件及子目录一并处理
-v<版本编号>设置文件或目录版本
-V显示指令执行过程
+<属性>开启文件或目录的该项属性
-<属性>关闭文件或目录的该项属性
=<属性>指定文件或目录的该项属性

常见使用

假设有一个文件为「.env」,采用 root 权限删除时提示权限不足,那么基本上就是要解除权限。
我们可以通过lsattr命令(List-attribute)来查看文件的 attr 信息从而来决定下一步操作。

lsattr .env

在确认文件具有i属性的情况下,我们用 chattr 来去除i属性以达到随意操作该文件的目的。

chattr -i .env