linux系统的文件除了有普通rwx权限外还有一种隐藏权限,例如明明有权限删除某个文件却报错了。
或者仅能为某个文件追加内容而不能减少内容,遇到这种很‘奇怪’的文件,就要怀疑是文件被设置隐藏权限了。
实例:
写入111到test.txt文件 [root@localhost pub]# echo "111" >> test.txt 成功删除test.txt文件, [root@localhost pub]# rm test.txt rm:是否删除普通文件 "test.txt"?y [root@localhost pub]# ls
再次写入111到test.txt文件
[root@localhost pub]# echo "111" >> test.txt
添加仅允许追加的隐藏权限(无法删除或覆盖)
[root@localhost pub]# chattr +a test.txt
添加后查看隐藏属性的设置情况,在当前目录下执行命令lsattr
[root@localhost pub]# lsattr
-----a---------- ./test.txt
再次尝试删除该文件,提示不允许删除
[root@localhost pub]# rm -rf test.txt
rm: 无法删除"test.txt": 不允许的操作
向test.txt中添加内容222,并查看添加后的内容
[root@localhost pub]# echo "222" >> test.txt
[root@localhost pub]# cat test.txt
111
222
vim编辑test.txt,尝试删除文件提示
"test.txt" E212: 无法打开并写入文件
请按 ENTER 或其它命令继续
切换普通用户pentest,对test.txt继续添加文件,提示权限不够
[root@localhost pub]# su - pentest
上一次登录:五 9月 9 08:53:44 CST 2016pts/1 上
[pentest@localhost ~]$ cd /pub/
[pentest@localhost pub]$ echo "333" >> test.txt
-bash: test.txt: 权限不够
[pentest@localhost pub]$
切回到root用户重新分配可写权限,此时需要注意重新给普通用户分配权限时要临时取消隐藏权限属性-a,
否则会报错“不允许的操作”,设置后chmod的可写权限后再次将-a属性附上。
[pentest@localhost pub]$ su - root
密码:
上一次登录:五 9月 9 08:54:11 CST 2016pts/1 上
[root@localhost ~]# ll /pub/test.txt
-rw-r--r--. 1 root root 8 9月 9 09:46 /pub/test.txt
[root@localhost ~]# chmod 646 /pub/test.txt
chmod: 更改"/pub/test.txt" 的权限: 不允许的操作
[root@localhost ~]# chattr -a /pub/test.txt
[root@localhost ~]# chmod 646 /pub/test.txt
[root@localhost ~]# ll /pub/test.txt
-rw-r--rw-. 1 root root 8 9月 9 09:46 /pub/test.txt
[root@localhost ~]#chattr +a /pub/test.txt
重新切换pentest,需要注意的是输出重定向的时候一定要用>>而不是>,
因为>>是在原有文本后面继续添加,符合-a隐藏属性的要求。而>则是清除原有内容后
再添加,这里面包含了删除的动作,所以会报错。
[root@localhost pub]# su - pentest
上一次登录:五 9月 9 09:52:20 CST 2016pts/1 上
[pentest@localhost ~]$ echo "333" > /pub/test.txt
-bash: /pub/test.txt: 不允许的操作
[pentest@localhost ~]$ echo "333" >> /pub/test.txt
[pentest@localhost ~]$ cat /pub/test.txt
111
222
333
[pentest@localhost ~]$