满意答案
fgpeur
2016.05.12
采纳率:47% 等级:10
已帮助:669人
你命令理解反了,看下理论吧,
文件权限除了读写执行与SUID、SGID、SBIT外还有一种隐藏权限,例如明明有权限删除某个文件却报错了,或者仅能为某个文件追加内容而不能减少内容,遇到这种很“奇怪”的文件,就要怀疑是文件被设置隐藏权限了。
chattr命令用于设置文件的隐藏权限,格式为:“chattr [参数] 文件”。
参数 作用
i 将无法对文件进行修改,若对目录设置后则仅能修改子文件而不能新建或删除。
a 仅允许补充(追加)内容.无法覆盖/删除(Append Only)。
S 文件内容变更后立即同步到硬盘(sync)。
s 彻底从硬盘中删除,不可恢复(用0填充原文件所在硬盘区域)。
A 不再修改这个文件的最后访问时间(atime)。
b 不再修改文件或目录的存取时间。
D 检查压缩文件中的错误。
d 当使用dump命令备份时忽略本文件/目录。
c 默认将文件或目录进行压缩。
u 当删除此文件后依然保留其在硬盘中的数据,方便日后恢复。
t 让文件系统支持尾部合并(tail-merging)。
X 可以直接访问压缩文件的内容。
lsattr命令用于显示文件的隐藏权限,格式为:“lsattr [参数] 文件”。
参数 作用
a 显示所有文件和目录。
l 显示隐藏属性的全称(默认简写成一个字母)。
R 递归处理,将指定目录下的所有文件及子目录一并处理。
d 若目标文件为目录,请加此参数。
写入一个名为linuxprobe,内容为"for Test"的普通文件:
[root@linuxprobe ~]# echo "for Test" > linuxprobe
尝试用rm命令删除,结果成功:
[root@linuxprobe ~]# rm linuxprobe
rm: remove regular file ‘linuxprobe’? y
再次写入linuxprobe文件:
[root@linuxprobe ~]# echo "for Test" > linuxprobe
添加仅允许追加的隐藏权限(无法删除与覆盖):
[root@linuxprobe ~]# chattr +a linuxprobe
再来尝试删除发现已经报错:
[root@linuxprobe ~]# rm linuxprobe
rm: remove regular file ‘linuxprobe’? y
rm: cannot remove ‘linuxprobe’: Operation not permitted
而用ls也无法看到不同的地方:
[root@linuxprobe ~]# ls -al linuxprobe
-rw-r--r--. 1 root root 9 Feb 12 11:42 linuxprobe
用lsattr命令则原形毕露了,果然是因为这个隐藏权限:
[root@linuxprobe ~]# lsattr linuxprobe
-----a---------- linuxprobe
去除对linuxprobe文件设置的隐藏权限:
[root@localhost ~]# chattr -a linuxprobe
再来看下linuxprobe文件的隐藏权限(已经没有了):
[root@localhost ~]# lsattr linuxprobe
---------------- linuxprobe
尝试删除该文件(已经可以顺利删除了):
[root@localhost ~]# rm linuxprobe
rm: remove regular file ‘linuxprobe’? y
00分享举报