文件权限-无法删除的文件

文件权限-无法删除的文件

Scroll Down

一、文件的隐藏权限

在linux中有时候,你发现拥有root权限或者在sudo组中的用户依然无法删除某个文件,ls查看发现该有的权限都有,就算你chmod了该文件权限也不能删除。只能增加该文件的内容,而不能修改和删除该文件的内容,这就是所谓的文件隐藏权限,即默认情况下不能被用户发现。

这个隐藏权限的作用,我个人觉得就是主要用在日志文件重要文件上。从一定程度上阻止了黑客篡改日志文件的情况。如果文件或者目录非常重要,建议设置文件隐藏权限。文件隐藏权限一般由root权限的用户设定。

关于文件的隐藏权限,涉及到两个命令:

  1. chattr:设置文件的隐藏权限
  2. lsattr:显示文件的隐藏权限
只用是root权限的用户才能使用chattr,普通用户也可使用lsattr

二、chattr

1)chattr使用方法

chattr [参数] 文件名/目录名

常用参数:
-i:对文件设置i,则无法对文件进行修改;对目录设置i,则仅能修改子目录中的内容而不能新建或删除
-a:对文件/目录设置a,则仅允许追加内容,无法删除或者覆盖内容
-s:对文件/目录设置s,则如果删除就彻底从磁盘中删除,不可恢复
-A:对文件/目录设置A,则不再修改该文件/目录的atime
-c:对文件/目录设置c,则表示保存的时候会先压缩再保存,而读取的时候自动解压出来
+/-:+表示增加,-表示减少,比如增加i权限+i
-R:递归处理,对目录进行设置隐藏权限

2)chattr实际操作

我们创建文件a.txt、目录b、c.txt(位于目录b中)、目录d(位于目录b中),随后使用chattr赋予a.txt和b隐藏权限,查看a.txt、目录b、c.txt的隐藏权限情况,随后再使用chattr结合-R参数,赋予b隐藏权限,查看目录b、c.txt和目录d的隐藏权限情况

chattr1

chattr2

结论:如果对目录设置隐藏权限,那么目录下的文件/目录不会继承隐藏权限,如果增加-R参数,那么录下的文件/目录会继承隐藏权限

分别使用普通用户和root权限用户删除a.txt、b、c.txt

chattr3

chattr4

chattr5

结论:如果对文件或者目录设置隐藏权限参数i,则无法对文件或者目录进行新增、删除,即mv/echo/cp/touch/mkdir等命令都无法对文件或者目录做操作

三、lsattr

lsattr主要是用于查看文件的隐藏权限,正常ls命令(包括加参数)都是无法查看到隐藏权限的,使用专门的命令才能查看到文件的隐藏权限。

lsattr [参数] 文件名/目录名

常用参数:
-R:递归处理,针对查看目录及其子目录的隐藏权限
-d:针对查看目录本身的(而非包括子目录)隐藏权限
-a:显示所有文件和目录