Linux系统中的文件除了具备一般权限和特殊权限之外,还有一种隐藏权限,即被隐藏起来的权限,默认情况下不能直接被用户发觉。有用户曾经在生产环境和RHCE考试题目中碰到过明明权限充足但却无法删除某个文件的情况,或者仅能在日志文件中追加内容而不能修改或删除内容,这在一定程度上阻止了黑客篡改系统日志的图谋,因此这种“奇怪”的文件也保障了Linux系统的安全性。
chattr命令
chattr命令用于设置文件的隐藏权限,格式为“chattr [参数] 文件”。如果想要把某个隐藏功能添加到文件上,则需要在命令后面追加“+参数”,如果想要把某个隐藏功能移出文件,则需要追加“-参数”。
chattr命令中用于隐藏权限的参数及其作用
[root@root ~]# chattr +i 1
[root@root ~]# rm 1
rm:是否删除普通空文件 "1"?y
rm: 无法删除"1": 不允许的操作
[root@root ~]#
lsattr命令
lsattr命令用于显示文件的隐藏权限,格式为“lsattr [参数] 文件”。在Linux系统中,文件的隐藏权限必须使用lsattr命令来查看,平时使用的ls之类的命令则看不出端倪。
一旦使用lsattr命令后,文件上被赋予的隐藏权限马上就会原形毕露。此时可以按照显示的隐藏权限的类型(字母),使用chattr命令将其去掉。
例子 :赋予一个a权限,进行测试
[root@root ~]# chattr -i 1
[root@root ~]# lsattr 1
---------------- 1
[root@root ~]# chattr +a 1
[root@root ~]# lsattr 1
-----a---------- 1
[root@root ~]# cat 1
[root@root ~]# echo "1112255" >> 1
[root@root ~]# cat 1
1112255
[root@root ~]# rm 1
rm:是否删除普通文件 "1"?y
rm: 无法删除"1": 不允许的操作
[root@root ~]# chattr -a 1
[root@root ~]# lsattr 1
---------------- 1
[root@root ~]#
[root@root ~]# rm 1
rm:是否删除普通文件 "1"?y
[root@root ~]# ls
anaconda-ks.cfg caishuzi.sh ip.sh user.txt 图片 桌面
a.tar ceshi.sh ip.txt 公共 文档
a.txt cji.sh panduan.sh 模板 下载
b.txt initial-setup-ks.cfg user.sh 视频 音乐
[root@root ~]#