linux的文件隐藏属性

Linux 系统中的文件除了具备一般权限和特殊权限之外,还有一种隐藏权限,即被隐藏起
来的权限,默认情况下不能直接被用户发觉。有用户曾经在生产环境和 RHCE 考试题目中碰
到过明明权限充足但却无法删除某个文件的情况,或者仅能在日志文件中追加内容而不能修
改或删除内容,这在一定程度上阻止了黑客篡改系统日志的图谋,因此这种“奇怪”的文件也
保障了 Linux 系统的安全性。

chattr 命令用于设置文件的隐藏权限,格式为“chattr [参数] 文件”。如果想要把某个隐藏
功能添加到文件上,则需要在命令后面追加“+参数”,如果想要把某个隐藏功能移出文件,
则需要追加“-参数”。chattr 命令中可供选择的隐藏权限参数非常丰富,具体如表下所示。

 

chattr 命令中用于隐藏权限的参数及其作用
i               无法对文件进行修改;若对目录设置了该参数,则仅能修改其中的子文件内容而不能新建或删除文件
a              仅允许补充(追加)内容,无法覆盖/删除内容(Append Only)
S             文件内容在变更后立即同步到硬盘(sync)
s             彻底从硬盘中删除,不可恢复(用 0 填充原文件所在硬盘区域)
A             不再修改这个文件或目录的最后访问时间(atime)
b             不再修改文件或目录的存取时间
D             检查压缩文件中的错误
d             使用 dump 命令备份时忽略本文件/目录
c              默认将文件或目录进行压缩
u             当删除该文件后依然保留其在硬盘中的数据,方便日后恢复
t              让文件系统支持尾部合并(tail-merging)
X            可以直接访问压缩文件中的内容

(+i参数)对于文件,无法修改内容。

[root@localhost ~]# echo "111" > test
[root@localhost ~]# chattr +i test
[root@localhost ~]# echo "222" >test
-bash: test: 权限不够

(+i参数)对于目录,只能修改子文件中的内容不能新建或删除文件

[root@localhost ~]# mkdir testdir
[root@localhost ~]# cd testdir
[root@localhost testdir]# 
[root@localhost ~]# chattr +i testdir
[root@localhost ~]# echo "111" > testdir/test
-bash: testdir/test: 权限不够
[root@localhost ~]# chattr -i testdir
[root@localhost ~]# echo "111" > testdir/test
[root@localhost ~]# chattr +i testdir/
[root@localhost ~]# chattr +i testdir
[root@localhost ~]# echo "222" >> testdir/test 
[root@localhost ~]# rm -f testdir/test
rm: 无法删除"testdir/test": 权限不够

(+a参数), 仅允许补充(追加)内容,无法覆盖/删除内容(Append Only)

[root@localhost ~]# echo "111" > test
[root@localhost ~]# chattr +a test
[root@localhost ~]# rm test
rm:是否删除普通文件 "test"?y
rm: 无法删除"test": 不允许的操作
[root@localhost ~]# echo "222" > test
-bash: test: 不允许的操作
[root@localhost ~]# echo "222" >> test

lsattr命令

lsattr 命令用于显示文件的隐藏权限,格式为“lsattr [参数] 文件”。在 Linux 系统中,文
件的隐藏权限必须使用 lsattr 命令来查看,平时使用的 ls 之类的命令则看不出端倪:

[root@localhost ~]# ls -l test
-rw-r--r-- 1 root root 8 8月  22 13:50 test
[root@localhost ~]# lsattr test
-----a-------e- test
[root@localhost ~]# lsattr -d testdir
----i--------e- testdir

 

你可能感兴趣的:(linux的文件隐藏属性)