2019独角兽企业重金招聘Python工程师标准>>>
一、特殊权限介绍
1. setuid
该权限是让普通用户可以用root的角色运行只有root才能运行的程序或命令。
如:用普通用户运行passwd命令来修改密码,实际上最终更改的是/etc/passwd文件,我们知道/etc/passwd文件是用户管理的配置文件,只有root权限的用户才能更改;
[root@localhost ~]# ls -l /etc/passwd
-rw-r--r-- 1 root root 2379 04-21 13:18 /etc/passwd
作为普通用户通过修改 /etc/passwd 来修改自己的口令肯定是不可能的,但是系统中普通用户可以通过 passwd 命令来修改自己的口令;这主要是因为 passwd 命令的权限中添加了setuid 权限(也就是r-s--x--x中的s);所以普通用户能临时变成root,间接修改/etc/passwd,以达到修改自己口令的权限。
[root@localhost ~]# ls -l /usr/bin/passwd
-r-s--x--x 1 root root 21944 02-12 16:15 /usr/bin/passwd
2. setgid
该权限只对目录有效,目录被设置该权限后, 任何用户在此目录下创建的文件都具有和该目录所属的组相同的组。
3. sticky bit
该权限可以理解为防删除位;一个文件是否可以被某用户删除,主要取决于该文件所属的组是否对该用户具有写权限。如果没有写权限,则这个目录下的所有文件都不能被删除,同时也不能添加新的文件。 如果希望用户能够添加文件但同时不能删除文件,则可以对文件使用sticky bit权限; 设置该权限后, 就算用户对目录具有写权限,也不能删除该文件。
二、特殊权限用法
特殊权限的操作与普通权限操作的命令是一样的,都是 chmod;
1. 格式
chmod u+s temp
-- 为temp文件加上setuid标志. (setuid 只对文件有效)chmod g+s tempdir
-- 为tempdir目录加上setgid标志 (setgid 只对目录有效)chmod o+t temp
-- 为temp文件加上sticky标志 (sticky只对文件有效)
2. 八进制方式表示(777 数字样式)
一般文件权限通过三组八进制数字来置标志,如:666, 777, 644等;设置这些特殊权限标志,则在这组数字之外在加一组八进制数字(如:4666
、2777
等); a b c 一组八进制数字三位的意义如下
a - setuid位, 如果该位为1, 则表示设置setuid 4---
b - setgid位, 如果该位为1, 则表示设置setgid 2---
c - sticky位, 如果该位为1, 则表示设置sticky 1---
3. 系统方式表示(rwx 样式)
设置了特殊权限,可以用 ls -l 来查看;如果有这些标志,则会在原来的执行标志位置上显示。
如:rwsrw-r--
表示有 setuid 权限rwxrwsrw-
表示有 setgid 权限rwxrw-rwt
表示有 sticky 权限
原来的执行标志x哪里去了呢?系统规定,如果本来在该位上有x,则这些特殊标志显示为小写字母 (s
、s
、t
); 否则,显示为大写字母 (S
、S
、 T
)。
注意:setuid和setgid会面临风险,所以尽可能的少用!!!