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表示SetUID2表示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)的更多相关文章

  1. 『学了就忘』Linux权限管理 — 55、文件特殊权限

    目录 1.文件特殊权限说明 2.设置SetUID 3.检测SetUID的脚本 4.设置SetGID (1)针对文件的作用 (2)针对目录的作用 5.Sticky BIT 6.设定文件特殊权限 7.文件 ...

  2. Linux文件与目录的默认权限与隐藏权限 - umask, chattr, lsattr, SUID, SGID, SBIT, file

    文件默认权限:umask [root@www ~]# umask 0022 <==与一般权限有关的是后面三个数字! [root@www ~]# umask -S u=rwx,g=rx,o=rx ...

  3. 文件的特殊权限(SUID,SGID,SBIT)

    文件的一般权限:r w x  对应 421  文件的特殊权限:SUID SGID SBIT对应 421  文件的隐藏权限:chattr设置隐藏权限,lsattr查看文件的隐藏权限. 文件访问控制列表: ...

  4. Mysql数据库用户及用户权限管理,Navicat设置用户权限

    Mysql数据库用户及用户权限管理,Navicat设置用户权限 一.Mysql数据库的权限 1.1 mysql数据库用户权限级别 1.2 mysql数据库用户权限 1.3 存放用户权限表的说明 二.用 ...

  5. ASP.NET MVC+EF框架+EasyUI实现权限管理系列(21)-用户角色权限基本的实现说明

    原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列(21)-用户角色权限基本的实现说明     ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇)   (1):框 ...

  6. CentOS 文件特殊权限SUID,SGID,SBIT

    1.SUID ,是一种对二进制程序进行设置的特殊权限,可以让二进制程序的执行者临时拥有所有者的权限(仅对拥有执行权限的二进制程序有效). (1)SUID权限仅对二进制程序有效: (2)本权限仅在执行该 ...

  7. Smartbi权限安全管理系统_保障数据权限安全

    思迈特软件Smartbi具有完善的安全管理体系,Smartbi权限安全管理系统它可以控制用户功能权限.数据访问权限.资源访问权限.Smartbi权限安全管理系统支持按用户.用户组.角色进行管理:支持多 ...

  8. Linux之特殊权限(SUID/SGID/SBIT)

    特殊权限的介绍 Set UID 当s这个标志出现在文件所有者的x权限上时,如/usr/bin/passwd这个文件的权限状态:“-rwsr-xr-x.”,此时就被称为Set UID,简称为SUID.那 ...

  9. 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   ...

随机推荐

  1. Thinking in Java——笔记(20)

    Annotations They provide information that you need to fully describe your program, but that cannot b ...

  2. KMP算法-Java实现

    目的: 为了解决字符串模式匹配 历程: 朴素模式匹配:逐次进行比较 KMP算法:利用匹配失败得到的信息,来最大限度的移动模式串,以此来减少比较次数提高性能 概念: m:是目标串长度 n:是模式串长度 ...

  3. php实现设计模式之 备忘录模式

    <?php /*备忘录模式:在不破坏封装的前提下,获取对象的内部状态,并且在对象外保存该状态.这样就可以将该对象恢复到保存之前的状态(行为模式) * * 发起人:记录当前时刻的内部状态,负责定义 ...

  4. 【GOF23设计模式】工厂模式

    来源:http://www.bjsxt.com/ 一.[GOF23设计模式]_简单工厂模式详解.面向对象设计原则.开闭原则.依赖反转原则.迪米特法则  没有工厂模式的情况 package com.te ...

  5. 取消IE提示下载安全提问

    需求:在企业访问内部WEB系统下载文件时,IE总会弹出安全提问,征得用户同意后弹出下载保存框.现用户需要点击下载后,直接弹出下载保存框. 方案:这涉及IE安全定义问题,进行相关设置即可.方法如下:

  6. 【HTML DOM】Node.nodeValue的用法

    目录结构: // contents structure [-] 语法 注意 详述 实例 参考文章 Note.noteValue 属性返回或设置当前属性的值. 语法 value = node.nodeV ...

  7. jQuery拖拽改变元素大小

    一个非常简单的例子,体验效果:http://keleyi.com/keleyi/phtml/jqtexiao/29.htm 以下是完整代码,保存到HTML文件打开也可以体验效果. <!DOCTY ...

  8. Linux安全基础:find命令的使用

    find 命令用于查找文件系统中的指定文件. *命令格式:find pathname -option [-print -exex -ok] 1.pathname要查找的目录路径 ~表示home目录 . ...

  9. supermap iclient for js 标签专题图(服务端)

    <!DOCTYPE><html> <head> <meta http-equiv="Content-Type" content=" ...

  10. 时空地图 TimeGIS.com 中生成等值线

    在我的地图软件TimeGIS中加入了等值线生成的功能: 等值线的生成使用了wCoutour库, 代码根据这里的例子修改,http://www.06climate.com/view/1244.html ...