下面来介绍一下隐藏权限 chattr ,先用命令 man chattr 来查看一下,

chattr 的用法很简单,虽然有很多选项,但是一般都用不到。

1、文件 +i

比如现在要给文件 1.txt 加一个隐藏权限,输入命令 chattr +i 1.txt ,见下图, 再用命令 vi 1.txt ,回车,按字母“i”进入编辑模式,可以看到文件 1.txt 没有内容,是空白的。 按字母“i”进入编辑模式,会出现一句警告,意思为正在更改一个只读文件, 即使随便写了一些东西进去,按“Esc”,编辑“:wq”,回车, 保存退出,也是不能成功的。又出现下图的红色警告, 即使用命令“:wq!”,回车,强制保存退出也是不行的, 依然出现红色警告, 现在只能编辑命令“:q!”,回车,才能强制退出, 退出之后,编辑命令“head -n 2 /etc/passwd > 1.txt”回车,会显示权限不够, 我们来看一下文件 1.txt 的权限是什么?为什么不能写? 上图中,可以看出 1.txt 文件的权限是 664 ,可读可写,这时候应该就要想到是不是有什么隐藏的特殊权限,使用命令 lsattr 1.txt ,是用来查看隐藏权限的, 可以看到,文件 1.txt 里面多了1个 i 。 接着做实验,我们新建一个文件 2.txt ,可以看到这个文件就没有 i 权限, 接着输入命令 mv 1.txt 3.txt 更改文件 1.txt 的名称为 3.txt ,显示不能更改。输入命令 rm -f 1.txt ,显示删除的操作也是不允许的。 用命令 lsattr 1.txt 查看,显示是有 i 的,接着用命令 touch 1.txt 来操作,显示权限不够, 因为 touch 命令会更改文件 1.txt 的创建时间,也是不允许的。这一点可以在命令 touch 2.txt 上验证得到,两个红色框框中时间是不一样的。 综上所述,chattr +i 这个命令是非常严谨的,不可以编辑内容,不可以更改文件名,不可以更新文件创建时间,不可以删除。

2、文件 -i

chattr 的 i 权限可以i加上去,那怎么去掉呢? 输入命令 chattr -i 1.txt ,回车,再输入命令 lsattr 1.txt ,可以看到 i 这个权限没有了。再去把刚才不能执行的命令,重新作一遍,发现全部可以了。

3、文件 +a

除了 i 这个权限,还有 a 权限,这个权限只能追加,不能删除,不能更改,不能重命名。 综上所述,a 权限可以追加,可以更改创建时间,不可以重命名,不可以编辑内容,不可以删除。

4、文件 -a

有 +a 权限,就有 -a 权限,见下图, a 权限去掉后,不可以的操作就又恢复了,这边不再演示。

5、目录 +i

上面说的都是文件,现在来看看目录。 上图中,可以看出,给目录 +i 权限和给文件 +i 权限实际上是一样的,+i 权限之后,目录也是不能删除,不能更改目录名称,不能创建子目录和子文件。

6、目录 +a

先给目录 111 减去 i 权限,再加上 a 权限,见下图, 可以看出,touch 命令在目录下面是可以使用的,这个操作相当于文件里的追加内容一样。再来看看是否可以编辑 12.txt 里面的内容, 出现上图的界面也是没关系的,直接输入“:wq”,回车,即可保存退出。再用 cat 命令查看文件内容,看到刚刚写入内容被保存起来了,接着用追加命令再查看一下,追加内容也成功了。 综上所述,给目录 +a 权限,可以新建子目录或子文件,可以更改子目录或子文件的内容。

再给刚刚目录 +i 的权限测试一下是否可以给已经存在的子文件编辑内容,见下图, 可以看出,给目录下已经存在的子文件追加内容,这个操作是可以执行的。

7、lsattr -R

来看一下 lsattr -R 这个命令,它可以查看目录 111 下面的子目录 222 和子目录 222 下面的子文件, 正常命令 lsattr 不加 -R 的话,见下图, 可以看出,不加 -R 命令,查看的仅仅是一层的文件, 以上就是,-R 作用。

8、lsattr -a

先用 lsattr 查看一下 root 目录, 上图可以看出,命令 lsattr /root/ 只能查看没有隐藏的文件,而命令 lsattr -a /root/ 可以查看全部的文件,包括隐藏的文件。还有命令 lsattr -d /root/ ,只查看目录本身,见下图,

总结: ①chattr +i +文件,文件不可以编辑内容,不可以更改文件名,不可以更新文件创建时间,不可以删除; ②lsattr + 文件,用来查看文件的隐藏权限; ③chattr -i +文件,可以将文件 +i 的权限撤销掉; ④chattr +a +文件,文件内容可以追加,可以更改创建时间,不可重命名,不可以编辑内容,不可以删除; ⑤chattr -a +文件,可以将文件 +a 的权限撤销掉; ⑥chattr +i +目录,目录不能删除,不能更改目录名称,不能创建子目录和子文件,可以给已经存在的子目录或子文件追加内容; ⑦chattr -i +目录,可以将目录 +i 的权限撤销掉; ⑧chattr +a +目录,可以新建子目录和子文件,可以更改子目录或子文件的内容; ⑨lsattr -R + 目录,查看子目录和子文件,lsattr + 目录,只能查看一层文件,无法按子目录显示; ⑩lsattr + 目录,查看没有隐藏的文件,lsattr -a + 目录,可以查看全部的文件,包括隐藏的文件; ⑪lsattr -d + 目录,只查看目录本身。