文件的隐藏权限

除了文件的读写,执行权限外,linux还有一种隐藏权限,设置隐藏权限可以防止一些其他用户的误操作或者恶意操作,当我们配置了nginx的放跨站攻击或其他安全措施后,相应的会在项目的根目录下生成一个隐藏文件.user.ini,当删除整个项目时会阻止操作完成.我们使用ls命令并使用chmod chown等命令设置了文件权限后会发现还是无法删除.这就是因为这个文件有隐藏的权限

查看文件的隐藏权限类型

1
命令: lsattr 

image-20200706185711910

可以看到有 i e两个权限

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
 1 A:即Atime,告诉系统不要修改对这个文件的最后访问时间。
 2 S:即Sync,一旦应用程序对这个文件执行了写操作,使系统立刻把修改的结果写到磁盘。
 3 a:即Append Only,系统只允许在这个文件之后追加数据,不允许任何进程覆盖或截断这个文件。如果目录具有这个属性,系统将只允许在这个目录下建立和修改文件,而不允许删除任何文件。
 4 b:不更新文件或目录的最后存取时间。
 5 c:将文件或目录压缩后存放。
 6 d:当dump程序执行时,该文件或目录不会被dump备份。
 7 D:检查压缩文件中的错误。
 8 i:即Immutable,系统不允许对这个文件进行任何的修改。如果目录具有这个属性,那么任何的进程只能修改目录之下的文件,不允许建立和删除文件。
 9 s:彻底删除文件,不可恢复,因为是从磁盘上删除,然后用0填充文件所在区域。
10 u:当一个应用程序请求删除这个文件,系统会保留其数据块以便以后能够恢复删除这个文件,用来防止意外删除文件或目录。
11 t:文件系统支持尾部合并(tail-merging)。
12 X:可以直接访问压缩文件的内容
13 e: 表示文件以ext4 extents存储的,ext4上新建文件的默认属性,不可用chattr修改

取消或添加文件的隐藏权限

使用+ -加权限类型即可设置文件的隐藏权限

1
2
chattr -i //减去文件的 i 隐藏数字属性,然后即可使用rm 正常删除
chattr +i //添加隐藏权限