第7章 权限管理(2)_文件特殊权限(SUID、SGID、SBIT)
2. 文件特殊权限(主要用来临时提升命令执行者或其组身份)
2.1 SetUID
(1)SetUID的功能
①只有可以执行的二进制程序才能设定SUID权限。用来临时提升执行程序(或某条命令)的用户身份。
②命令执行者要对该程序拥有x(执行)权限,即用户必须拥有执行该程序的权限。
③命令执行者在执行该程序时获得该程序文件属主的身份(在执行程序的过程中灵魂附体为文件的属主
④SetUID权限只在该程序执行过程中有效,也就是说身份改变只在程序执行过程中有效。
(2)以passwd命令为例分析SUID权限

①所有用户密码都是写入/etc/shadow文件中,但这个文件的权限是000(表示除root用户外的所有用户对该文件都没有任何权限。注意,连查看的权限也没有!)
②但当普通用户执行passwd修改自己的密码时,最终这个密码又会被写入/etc/shadow文件!这就有点奇怪了。普通用户不是对文件没有任何权限吗?现在竟然可以将密码写入shadow文件!
③原来,passwd这个程序(命令)具有SUID权限(见图中的“rwsr-xr-x”,其中的s表示SUID权限),因此当普通用户执行了passwd命令后,其权限会被暂时地提升为该命令所有者(root)的权限。所以就可以读取shadow文件了。命令执行完后,又恢复为原来权限。
(3)设定SetUID的方法
①chmod 4755 文件名 (其中的4表示SetUID、2表示setGID、1表示Sticky BIT(其它人),755表示所有者、所属组和其它人的权限)
②chmod u+s 文件名
(4)取消SetUID的方法
①chmod 755 文件名(重新设回原来的755)
②chmod u-s 文件名(直接取消SUID)
(5)应用举例
①cat命令并不具有SUID权限(rwxr-xr-x),所有普通用户不能查看/etc/shadow文件。但可以通过给cat设置SUID权限,这样普通用户也就可以查看该文件了。(这里只是实验,注意这是很危险的!)。

(6)危险的SetUID
①关键目录应严格控制写权限。比如“/”、“/usr”等。
②用户密码设置要严格遵守密码三原则。
③对系统中默认应用具有SetUID权限的文件作一列表,定时检查有没有这之外的文件被设置了SetUID权限。
【实验分析】给vim命令设置SUID权限(危险!)

①设置vim的SUID权限。(注意,vim所有者为root)
②切换到普通用户testUser,同时可以看出该用户对shadow文件没有任何权限,对password也只有只读权限。
③但此时,当用testUser打开vim时,由于vim开启了SUID权限,所以testUser的身份被临时提升为vim所有者的身份,即具有root权限。因此就可以编辑passwd文件,这是很危险的。因为testUser用户可以修改passwd中自己UID为0,这样就摇身一变成为超级用户了。
④这里只是实验,可以将testUsedr的UID改回原来的值,并chmod u-s /usr/bin/vim
2.2 SetGID
2.2.1 SetGID的作用
(1)SetGID针对目录的作用
①普通用户必须对此目录拥有r和x权限,才能进入此目录
②普通用户在此目录中的有效组会变成此目录的所属组
③若普通用户对此目录拥有w权限时,新建的文件的默认属组是这个目录的属组。
(2) SetGID针对文件的作用
①只有可执行的二进制程序才能设置SGID权限
②命令执行者要对程序拥有x(执行)权限
③命令执行在执行程序的时候,组身份升级为该程序文件的属组
④SetGID权限同样只在该程序执行过程中有效,也就是说组身份改变只在程序执行过程中有效。
2.2.2 设置和取消SGID
(1)设置SGID:
①#chmod 2755 文件名(其中的2表示设置SGID)
②#chmod g+s 文件名
(2)取消SGID
①#chmod 755 文件名(设置为原来的权限,注意755之前没有个2了)
②#chmod g-s 文件名
2.2.3 应用举例
(1)以locate命令为例分析SGID权限

①使用locate查询文件时,其实是访问/vab/lib/mlocate/mlocate.db文件,但该文件对于普通用户来说没有任何权限。
②但locate命令本身具有rwx--s--x权限,即所属组具有SGID权限。因此当普通用户执行locate命令时,该用户的组身份会被临时地提升为locate命令所属组(slocate)的权限,而slocate组对mlocate.db具有r权限,因此查询成功。
③命令结束后,执行命令的用户组身份返回原来的组。
(2)设置目录的SGID

①首先以root身份创建/tmp/test目录,并赋予这个目录SGID权限。
②切换到普通用户testUser,然后在家目录下随便创建一个abc文件,可以看出该文件的所属组为testUser。
③同样以testUser身份在/tmp/test目录下创建一个abc文件,会发现该文件的所属组为root,而不是testUser。这就是因为test这个目录具有了SGID权限,所有在该目录下创建的文件,其所属组都会变成test目录的所属组,而不是创建者所属组的身份。
2.3 Sticky BIT
(1)SBIT粘着位作用
①粘着位目前只对目录有效
②普通用户对该目录拥用w和x权限,即普通用户可在此目录拥有写入权限
③如果没有粘着位,因为普通用户拥有w权限,所以可以删除此目录下的所有文件,包括其他用户建立的文件。一旦赋予了粘着位,除了root可以删除所有文件,普通用户就算拥有w权限,也只能删除自己建立的文件,但是不能删除其他用户建立的文件。
(2)设置和取消SBIT
①设置粘着位:chmod 1755 目录名,或者chmod o+t 目录名
②取消粘着位:chmod 755 目录名,或者chmod o-t 目录名
(3)应用举例

①lisi用户在/tmp/目录下创建list_test.txt文件,zhangsan试图删除这个文件,由于/tmp/目录的粘着位权限的限制,会导致删除失败。
②从/tmp/目录的权限可以看出,默认这个设置了SBIT权限。(普通用户的执行权限(execute)用”t”表示)
③从这个例子中可以看到zhangsan可以看到lishi在/tmp/目录下创建的文件,但是不能删除该文件。注意,能不能删除目录下的文件,要看这个用户对该目录是否有写权限,从/tmp/的权限(drwxrwxrwt)可以看出,任何用户都有写权限,但由于SBIT粘着位的存在,导致只有文件创建者可以删除自己创建的文件,但无法删除别人创建的文件。
第7章 权限管理(2)_文件特殊权限(SUID、SGID、SBIT)的更多相关文章
- 『学了就忘』Linux权限管理 — 55、文件特殊权限
目录 1.文件特殊权限说明 2.设置SetUID 3.检测SetUID的脚本 4.设置SetGID (1)针对文件的作用 (2)针对目录的作用 5.Sticky BIT 6.设定文件特殊权限 7.文件 ...
- Linux文件与目录的默认权限与隐藏权限 - umask, chattr, lsattr, SUID, SGID, SBIT, file
文件默认权限:umask [root@www ~]# umask 0022 <==与一般权限有关的是后面三个数字! [root@www ~]# umask -S u=rwx,g=rx,o=rx ...
- 文件的特殊权限(SUID,SGID,SBIT)
文件的一般权限:r w x 对应 421 文件的特殊权限:SUID SGID SBIT对应 421 文件的隐藏权限:chattr设置隐藏权限,lsattr查看文件的隐藏权限. 文件访问控制列表: ...
- Mysql数据库用户及用户权限管理,Navicat设置用户权限
Mysql数据库用户及用户权限管理,Navicat设置用户权限 一.Mysql数据库的权限 1.1 mysql数据库用户权限级别 1.2 mysql数据库用户权限 1.3 存放用户权限表的说明 二.用 ...
- ASP.NET MVC+EF框架+EasyUI实现权限管理系列(21)-用户角色权限基本的实现说明
原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列(21)-用户角色权限基本的实现说明 ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇) (1):框 ...
- CentOS 文件特殊权限SUID,SGID,SBIT
1.SUID ,是一种对二进制程序进行设置的特殊权限,可以让二进制程序的执行者临时拥有所有者的权限(仅对拥有执行权限的二进制程序有效). (1)SUID权限仅对二进制程序有效: (2)本权限仅在执行该 ...
- Smartbi权限安全管理系统_保障数据权限安全
思迈特软件Smartbi具有完善的安全管理体系,Smartbi权限安全管理系统它可以控制用户功能权限.数据访问权限.资源访问权限.Smartbi权限安全管理系统支持按用户.用户组.角色进行管理:支持多 ...
- Linux之特殊权限(SUID/SGID/SBIT)
特殊权限的介绍 Set UID 当s这个标志出现在文件所有者的x权限上时,如/usr/bin/passwd这个文件的权限状态:“-rwsr-xr-x.”,此时就被称为Set UID,简称为SUID.那 ...
- centos 特殊权限 各种搜索命令 lsattr ,chattr,suid,sgid,sbit,file,type是否是内置命令,stat文件属性 ,whereis,locate,find,ln 内部命令和外部命令 第五节课
centos 特殊权限 各种搜索命令 lsattr ,chattr,suid,sgid,sbit,file,type是否是内置命令,stat文件属性 ,whereis,locate,find,ln ...
随机推荐
- 【夯实PHP基础】PHP 面向对象
1. 对象中的属性或者函数是 private 或者是 protect的时候,当实例化这个对象的时候,外部是不能访问到这个属性和函数的. <?php class TestClass { //pri ...
- UnitOfWork以及其在ABP中的应用
Unit Of Work(UoW)模式在企业应用架构中被广泛使用,它能够将Domain Model中对象状态的变化收集起来,并在适当的时候在同一数据库连接和事务处理上下文中一次性将对象的变更提交到数据 ...
- Xdebug文档(二)变量显示特性
Xdebug能替代PHP的var_dump()函数来显示变量值.xdebug的版本包含对不同数据类型作数组元素/对象属性.最大深度和字符串长度以不同颜色标识.这里也有一些功能能很好地处理变量显示. 相 ...
- OData V4 系列 查询操作
OData 学习目录 对OData的操作,主要是查询,下面把相关的查询情况列出来,供参考学习,每个操作都有对应的截图,便于理解 默认查询 $expand 查询导航属性关系 ,查询Product相关的 ...
- CSS3文本溢出显示省略号
CCS3属性之text-overflow:ellipsis;的用法和注意之处 语法: text-overflow:clip | ellipsis 默认值:clip 适用于:所有元素 clip: 当对象 ...
- webpack继续
序言:继续上一篇<webpack初入> 1.上一篇配置完成后最终的命令是:webpack,如果更改package.json中的一个配置如下: 换为 此时最终的命令:npm start等同于 ...
- js限制文本框只能输入数字方法小结
有时需要限制文本框输入内容的类型,本节分享下正则表达式限制文本框只能输入数字.小数点.英文字母.汉字等代码. 例如,输入大于0的正整数 代码如下: <input onkeyup="i ...
- JavaScript中Array类型方法总结
Array类型是ECMAScript中最常用的类型之一,ECMAScript中的数组与其他多数语言中的数组有着相当大的区别.ECMAScript数组的每一项可以保存任何类型的数据.这里总结了数组类型的 ...
- AMD规范与CMD规范的区别是什么?
AMD规范与CMD规范的区别是什么? 在比较之前,我们得先来了解下什么是AMD规范?什么是CMD规范?当然先申明一下,我个人也是总结下而已,也是网上看到的资料,自己总结下或者可以说整理下而已,供 ...
- Android 手机卫士--设置界面&功能列表界面跳转逻辑处理
在<Android 手机卫士--md5加密过程>中已经实现了加密类,这里接着实现手机防盗功能 本文地址:http://www.cnblogs.com/wuyudong/p/5941959. ...