linux系统charr +a目录权限,一个普通用户如何可以在里面删除文件,另外一个用户不能删除

如题所述

你命令理解反了,看下理论吧,
文件权限除了读写执行与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
温馨提示:内容为网友见解,仅供参考
无其他回答

linux系统charr +a目录权限,一个普通用户如何可以在里面删除文件,另外...
c 默认将文件或目录进行压缩。u 当删除此文件后依然保留其在硬盘中的数据,方便日后恢复。t 让文件系统支持尾部合并(tail-merging)。X 可以直接访问压缩文件的内容。lsattr命令用于显示文件的隐藏权限,格式为:“lsattr [参数] 文件”。参数 作用 a 显示所有文件和目录。l 显示...

如何编写一个shell脚本
read var: 提示用户输入,并将输入赋值给变量 sort file.txt: 对file.txt文件中的行进行排序 uniq: 删除文本文件中出现的行列比如: sort file.txt | uniq expr: 进行数学运算Example: add 2 and 3expr 2 "+" 3 find: 搜索文件比如:根据文件名搜索find . -name filename -print tee: 将数据输出到标准输...

相似回答