一、特殊权限介绍

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等;设置这些特殊权限标志,则在这组数字之外在加一组八进制数字(如:46662777等);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,则这些特殊标志显示为小写字母 (sst); 否则,显示为大写字母 (SST)。

注意:setuid和setgid会面临风险,所以尽可能的少用!!!

02-22 01:42