当你在Linux系统中对某一文件进行操作时,首先需要确保当前登录帐号具有相应的权限,比如读、写、执行权限;root用户在Linux操作系统中拥有最高权限,并被称为超级用户,是Linux系统中的神,没有它不能干的事。但有一天,你发现一个文件不能被删除,而在检查登录用户又是root时,请不要慌张,你又该学习新的命令了:chattr与lsattr。
我是root用户,当我使用rm命令删除文件时提示没有权限,而且还是在自己的家目录中,ls命令可以看到文件的所属用户为root且具有读写权限。
1. chattr命令
作用:设置文件的隐藏属性
常用语法:chattr [+-=][ASacdis] 文件名或目录名
选项说明:
+ :增加一个特殊参数,在原有的参数上继续增加;
– :移除一个特殊参数,只移除当前参数,其他参数不变;
= :设定特殊参数,且文件仅有后面设定的参数;
A :存在A 这个属性时,这个文件(或目录)的存取时间 atime (access) 将不可被修改;
S :文件内容被修改时,将数据同步写入磁盘当中;
a :当设定 a 之后,这个档案将只能增加数据,而不能删除,只有 root 才能设定这个属性;
c :这个属性设定之后,将会自动的将此文件进行压缩,在读取的时候将会自动解压缩;
d :当dump(备份)程序被执行的时候,设定 d 属性将可使该文件(或目录)不具有dump功能;
i :设定i属性后,这个文件不能被删除、重命名、修改内容等操作,root用户也没办法完成这些操作;
s :当文件设定了 s 参数时,执行删除命令后将不能再恢复;
2. lsattr命令
作用:查看文件的隐藏属性
语法:lsattr [操作选项] 或 lsattr [操作选项] 文件名
选项说明:
-a :显示所有文件和目录;
-d :显示当前目录的权限,不显示目录中的子文件;
-R :递归处理,将指定目录下的所有文件及子目录一并处理;
-v :显示文件或目录版本;
-V :显示版本信息。
3. 回顾不能删除的文件
使用lsattr命令即可让它原形毕露:
lsattr
可以看到oldfile.txt命令有一个i隐藏属性,具备该属性后,即便是root用户也对其没有一点办法操作,解决办法是root用户使用chattr命令将i属性移除再删除:
chattr -i oldfile.txt