Chinaunix首页 | 论坛 | 博客
  • 博客访问: 43529
  • 博文数量: 26
  • 博客积分: 20
  • 博客等级: 民兵
  • 技术积分: 245
  • 用 户 组: 普通用户
  • 注册时间: 2010-03-17 15:52
文章分类

全部博文(26)

文章存档

2016年(23)

2015年(3)

我的朋友

分类: LINUX

2016-06-07 19:47:51

三种特殊权限简介
SUID

当一个设置了SUID 位的可执行文件被执行时,该文件将以所有者的身份运行,也就是说无论谁来执行这个文件,他都有文件所有者的特权。
如果所有者是 root 的话,那么执行人就有超级用户的特权了。

常见用例:/etc/passwd  文件有s健位,所以每个普通用户可以passwd修改自己的密码

SGID

当一个设置了SGID 位的可执行文件运行时,该文件将具有所属组的特权, 任意存取整个组所能使用的系统资源。

若一个目录设置了SGID,则所有被复制到这个目录下的文件, 其所属的组都会被重设为和这个目录一样,除非在复制文件时加上-p (preserve,保留文件属性)的参数,才能保留原来所属的群组设置。

一般常用在共享目录权限控制
sticky-bit
对一个目录设置了sticky-bit之后,存放在该目录的文件仅准许其属主执行删除、 移动等操作。


总结:1、set uid: 该权限仅对二进制程序有效(Shell、普通文件无效)
                           执行者需对该文件有x的可执行权限
                           本权限仅在执行程序的过程中有效,即为暂时性的
                           执行者将具有改程序所有者(owner)的权限

         2、set gid: 文件方面:对二进制程序有效
                                            程序执行者需具备程序的x的可执行权限
                                            执行者在执行的过程中将会获得改程序用户组的支持
                           目录方面: 用户若对此目录有r与x权限时,该用户能够进入此目录
                                            用户在此目录下的有效用户组将会变成该目录的属组
                                             若用户在此目录下具有w权限(可创建文件),则用户所创建的新文件的用户组为目录的属组

         3、设置Sticky黏键:仅对目录有限
                                当用户对此目录有w、x权限,当用户在该目录下创建文件或目录时,仅有自己与root才有权利删除该文件

                                 简单说明下:用户甲为研发其中一员,研发成员属于dev组,各目录对应在/home/dev/XXX(研发名字),
    甲用户对/home/dev目录有w权限,代表甲可以删除、移动、重名了/home/dev其他研发成员的资料,这是极其不安全的,但是
    如果对/home/dev目录设置sticky,则除了root和本人外其他人无法进行毁灭性的操作



特殊权限的数值表示
三种特殊权限可以用单独的一位8进制数值表示

SUID、SGID和sticky-bit的数值表示

SUID SGID sticky 二进制 八进制 说明
- - - 000 0 不设置特殊权限
- - t 001 1 只设置sticky
- s - 010 2 只设置SGID
- s t 011 3 只设置SGID和sticky
s - - 100 4 只设置SUID
s - t 101 5 只设置SUID和sticky
s s - 110 6 只设置SUID和SGID
s s t 111 7 设置三种特

如何设置:

操作这些标志与操作文件权限的命令是一样的, 都是 chmod. 有两种方法来操作, 
1) chmod u+s temp -- 为temp文件加上setuid标志. (setuid 只对文件有效,U=用户) 
chmod g+s tempdir -- 为tempdir目录加上setgid标志 (setgid 只对目录有效,g=组名) 
chmod o+t temp -- 为temp文件加上sticky标志 (sticky只对文件有效) 

2) 采用八进制方式. 这一组八进制数字三位的意义如下, 
abc 
a - setuid位, 如果该位为1, 则表示设置setuid 
b - setgid位, 如果该位为1, 则表示设置setgid 
c - sticky位, 如果该位为1, 则表示设置sticky 

设置后, 可以用 ls -l 来查看. 如果本来在该位上有x, 则这些特殊标志显示为小写字母 (s, s, t). 否则, 显示为大写字母 (S, S, T)
如:

rwsrw-r-- 表示有setuid标志 (rwxrw-r--:rwsrw-r--)
rwxrwsrw- 表示有setgid标志 (rwxrwxrw-:rwxrwsrw-)
rwxrw-rwt 表示有sticky标志 (rwxrw-rwx:rwxrw-rwt)




阅读(406) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~