我的linux系统中有一个普通文件
yu@ubuntu:/home/yu$ ls -l test
-rwxr-xr-x 1 root root 10346 10月 30 12:08 test
现在我想把它删掉了
yu@ubuntu:/home/yu$ sudo rm -rf test
rm: cannot remove `test': Operation not permitted
删不掉!!!
居然有超级权限删除不掉的普通文件,疑惑中…
查阅了一下资料,发现有隐藏属性这种更厉害的东东,使用 lsattr 命令查看了一下
yu@ubuntu:/home/yu$ lsattr test
-----a-------e- test
看了一下a字母的作用:文件或目录仅可追加数据,不可删除等操作
使用 chattr 命令去掉a之后便可以正常删除了
yu@ubuntu:/home/yu$ sudo chattr -a test
yu@ubuntu:/home/yu$ lsattr test
-------------e- test
yu@ubuntu:/home/yu$ sudo rm -rf test
yu@ubuntu:/home/yu$
下面列举一下可用的选项和一些字母的解释
chattr
chattr [-RVf] [-+=AacDdeijsSu] [-v version] files...
选项
-R:递归处理,将指令目录下的所有文件及子目录一并处理;
-v<版本编号>:设置文件或目录版本;
-V:显示指令执行过程;
+<属性>:开启文件或目录的该项属性;
-<属性>:关闭文件或目录的该项属性;
=<属性>:指定文件或目录的该项属性。
模式
a:让文件或目录仅供附加用途;
b:不更新文件或目录的最后存取时间;
c:将文件或目录压缩后存放;
d:将文件或目录排除在倾倒操作之外;
i:不得任意更动文件或目录;
s:保密性删除文件或目录;
S:即时更新文件或目录;
u:预防意外删除。
lsattr
lsattr [-RVadlv] [files...]
选项
-E:可显示设备属性的当前值,但这个当前值是从用户设备数据库中获得的,而不是从设备直接获得的。
-D:显示属性的名称,属性的默认值,描述和用户是否可以修改属性值的标志。
-R:递归的操作方式;
-V:显示指令的版本信息;
-a:列出目录中的所有文件,包括隐藏文件。
若下次想把重要的内容上锁,防止意外删除,可以重新加上,当然也是需要root权限操作,并且使用普通的 ls 查看命令是看不出来的…
yu@ubuntu:/home/yu$ lsattr test
-------------e- test
yu@ubuntu:/home/yu$ sudo chattr +a test
[sudo] password for yu:
yu@ubuntu:/home/yu$ lsattr test
-----a-------e- test