Linux 权限补充_特殊权限(setuid、setgid、sticky bit)

1、特殊权限介绍

1. setuid

该权限是让普通用户能够用root的角色运行只有root才能运行的程序或命令。
如:用普通用户运行passwd命令来修改密码,实际上最终更改的是/etc/passwd文件,咱们知道/etc/passwd文件是用户管理的配置文件,只有root权限的用户才能更改;ui

[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,以达到修改本身口令的权限。code

[root@localhost ~]# ls -l /usr/bin/passwd
-r-s--x--x 1 root root 21944 02-12 16:15 /usr/bin/passwd

2. setgid

该权限只对目录有效,目录被设置该权限后, 任何用户在此目录下建立的文件都具备和该目录所属的组相同的组。it

3. sticky bit

该权限能够理解为防删除位;一个文件是否能够被某用户删除,主要取决于该文件所属的组是否对该用户具备写权限。若是没有写权限,则这个目录下的全部文件都不能被删除,同时也不能添加新的文件。 若是但愿用户可以添加文件但同时不能删除文件,则能够对文件使用sticky bit权限; 设置该权限后, 就算用户对目录具备写权限,也不能删除该文件。配置

2、特殊权限用法

特殊权限的操做与普通权限操做的命令是同样的,都是 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会面临风险,因此尽量的少用!!!样式

相关文章
相关标签/搜索