Linux2.5隐藏权限及特殊权限
隐藏权限lsattr_chattr
语法:chattr [+-=] [Asaci] [文件或者目录名]
# i 增加后,文件不能删除、重命名、设定链接、写入或者增加数据 [root@chy002 tmp]# ls -l 1.txt -rw-rw-rw-. 1 chy002 chy002 0 10月 25 06:08 1.txt [root@chy002 tmp]# chattr +i 1.txt [root@chy002 tmp]# ls -l 1.txt -rw-rw-rw-. 1 chy002 chy002 0 10月 25 06:08 1.txt [root@chy002 tmp]# vi 1.txt [No write since last change] [root@chy002 tmp]# head -n2 /etc/passwd > 1.txt -bash: 1.txt: 权限不够 [root@chy002 tmp]# lsattr 1.txt #查看隐藏权限 ----i----------- 1.txt
#不能touch,因为会修改创建时间;不能rm;不能mv
# a只能追加,不能删除,非root用户不能设定该属性 [root@chy002 tmp]# chattr +a 2.txt [root@chy002 tmp]# lsattr 2.txt -----a---------- 2.txt [root@chy002 tmp]# rm -f 2.txt rm: 无法删除"2.txt": 不允许的操作 [root@chy002 tmp]# mv 2.txt 20.txt mv: 无法将"2.txt" 移动至"20.txt": 不允许的操作 [root@chy002 tmp]# touch 2.txt [root@chy002 tmp]# !l lsattr 2.txt -----a---------- 2.txt [root@chy002 tmp]# head -n2 /etc/passwd > 2.txt -bash: 2.txt: 不允许的操作 [root@chy002 tmp]# head -n2 /etc/passwd >> 2.txt [root@chy002 tmp]# chattr -a 2.txt
lsattr -a 连同隐藏文件一同列出来 -R 连同子目录的数据一同列出 -d 仅该目录本身
特殊权限set_uid
该权限是针对二进制可执行文件,使文件在执行阶段具有文件所有者的权限。比如普通用户使用passwd命令,可以临时获得root权限即该命令所有者权限,从而更改密码。Linux仅有这一个自带suid权限/usr/bin/passwd。
如果增加suid权限后,看到字母大写的S,这是由于之前的所有者没有了x执行权限,不受影响。 不能直接 u=rwS 可以u=rwsx或者 u=rws u+x
[root@chy002 chy]# ls -l /usr/bin/passwd -rwsr-xr-x. 1 root root 27832 6月 10 2014 /usr/bin/passwd [root@chy002 chy]# su user [user@chy002 chy]$ ls /root/ ls: 无法打开目录/root/: 权限不够 [user@chy002 chy]$ su 密码: [root@chy002 chy]# chmod u+s /usr/bin/ls [root@chy002 chy]# ls -l /usr/bin/ls -rwsr-xr-x. 1 root root 117616 6月 10 2014 /usr/bin/ls [root@chy002 chy]# su user [user@chy002 chy]$ ls /root/ anaconda-ks.cfg
特殊权限set_gid
可以应用在文件上同样可以作用在目录上。设置在文件上和set_uid类似,前提这个文件必须是可执行的二进制文件。设置set_gid后,执行该文件的用户会临时以该文件所属组的身份执行。若目录被设置这个权限后,任何用户在此目录下创建的文件或者目录都具有和该目录所属组相同的组。
[root@chyuanliu-01 tmp]# ls -ld chy0826/ drwxr-xr-x. 2 root root 30 8月 27 02:13 chy0826/ [root@chyuanliu-01 tmp]# chown :chy chy0826/ [root@chyuanliu-01 tmp]# ls -ld chy0826/ drwxr-xr-x. 2 root chy 30 8月 27 02:13 chy0826/ [root@chyuanliu-01 tmp]# touch chy0826/iii.txt [root@chyuanliu-01 tmp]# ls -ld chy0826/iii.txt -rw-r--r--. 1 root root 0 8月 27 02:17 chy0826/iii.txt [root@chyuanliu-01 tmp]# chmod g+s chy0826/ [root@chyuanliu-01 tmp]# touch chy0826/ii.txt [root@chyuanliu-01 tmp]# ls -ld chy0826/ii.txt -rw-r--r--. 1 root chy 0 8月 27 02:17 chy0826/ii.txt
特殊权限stick_bit
[user@chy002 ~]$ ls -dl /tmp/ drwxrwxrwt. 9 root root 4096 10月 26 01:23 /tmp/ #可以看到tmp文件权限最后一位是t,这就是防删除位
一个文件能否被删除,取决于该文件的父目录的权限,/tmp/目录是777,任何人都可写的,所以理论上任何人都可以删除/tmp/下的所有文件,但是,user2是不可以删除user1的文件的,可以修改,只有user1和root可以删除,这就是因为/tmp/目录有一个stick_bit。chmod o+t 目录 #防止其他用户删除自己文件,root用户除外