第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表示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权限。(普通用户的执行权限用”t”表示)

  ③从这个例子中可以看到zhangsan可以看到lishi在/tmp/目录下创建的文件,但是不能删除该文件。注意,能不能删除目录下的文件,要看这个用户对该目录是否有写权限,从/tmp/的权限(drwxrwxrwt)可以看出,任何用户都有写权限,但由于SBIT粘着位的存在,导致只有文件创建者可以删除自己创建的文件,但无法删除别人创建的文件。

时间: 2024-11-08 10:41:06

第7章 权限管理(2)_文件特殊权限(SUID、SGID、SBIT)的相关文章

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

文件默认权限:umask [[email protected] ~]# umask 0022 <==与一般权限有关的是后面三个数字! [[email protected] ~]# umask -S u=rwx,g=rx,o=rx 默认的情况如下: 若使用者创建为『文件』则默认『没有可运行( x )权限』,亦即只有 rw 这两个项目,也就是最大为 666 分,默认权限如下: -rw-rw-rw- 若使用者创建为『目录』,则由於 x 与是否可以进入此目录有关,因此默认为所有权限均开放,亦即为 777

Linux 学习:文件特殊权限SUID, SGID, SBIT

本次记录Linux特殊权限SUID.SGID.SBIT相关知识及使用实例等. 由于SUID和SGID涉及到系统安全,所以对它们知识点的掌握尤为重要. 关于文件权限的表示方法和解析 SUID是Set User ID,SGID是Set Group ID的意思. Linux下可以用ls –l命令来查看文件的权限.用ls命令所得到的表示法的格式是类似这样的:-rwxr-xr-x 这种方法共有十位 9 8 7 6 5 4 3 2 1 0 -  r w x r  -  x  r - x 第9位表示文件类型,

文件的特殊权限:SUID SGID SBIT

文件的特殊权限:SUID SGID SBIT我们提到关于文件的重要权限,那就是r,w,x这三个读,写,执行的权限,但是我们发现/tmp目录权限就很奇怪, 还有/usr/bin/passwd和  /usr/bin/wall SETUIDSUID仅可以用在二进制程序上,不能够用在shell script上面suid的限制与功能:1.SUID仅对二进制程序有效2.执行者对于该程序需要有X的可执行权限3.本权限仅在执行该程序的时候有效4.执行者将具有该程序所有者的权限 SETGID SGID可以对文件或

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

特殊权限的介绍 Set UID 当s这个标志出现在文件所有者的x权限上时,如/usr/bin/passwd这个文件的权限状态:"-rwsr-xr-x.",此时就被称为Set UID,简称为SUID.那么这个特殊权限的特殊性的作用是什么呢?1.SUID权限仅对二进制程序(binary program)有效:2.执行者对于该程序需要具有x的可执行权限:3.本权限仅在执行该程序的过程中有效(run-time):4.执行者将具有该程序拥有者(owner)的权限.SUID的目的就是:让本来没有相

Linux自学第二天(权限管理命令、文件搜索命令、帮助命令)

添加用户两步走:1.useradd username   2.passwd ps  权限管理命令 命令名称:chmod  ->>change the permissions mode of a file 命令所在路径:/bin/chmod 执行权限:所有用户 语法:chmod [{u g o} {+-=}{rwx}][文件或目录] [mode = 421] [文件或目录] +:增加权限 -:减少权限 =:直接赋予权限 掌握的重点是用数字的方式进行权限控制,r=4 w=2 x=1. rwxr-x

第7章 权限管理(1)_ACL权限

1. ACL权限 1.1 ACL权限简介与开启 (1)ACL权限简介 ①ACL是Access Control List的缩写,主要目的是在提供传统的owner,group,others的read,write,execute权限之外的局部权限设定.ACL可以针对单个用户,单个文件或目录来进行r,w,x的权限设定,特别适用于需要特殊权限的使用情况. ②简单地来说,ACL就是可以设置特定用户或用户组对于一个文件/目录的操作权限.(即,将文件或目录的操作权限赋于某些特定的用户或组) (2)查看分区ACL

Linux 文件特殊权限 SUID SGID SBIT

文件除了常规的权限r, w, x 还有一些特殊的权限,s与t权限,具体的用处如下 1 SetUID 当s 这个标志出现在文件所有者的x权限上时, 例如/usr/bin/passwd, [[email protected] ~]# ll -d /usr/bin/passwd-rwsr-xr-x. 1 root root 30768 Feb 22 2012 /usr/bin/passwd 这个文件的权限状态为 -rwsr-xr-x 此时被称作Set UID 简称SUID 的特殊权限. 那么SUID的

CS1:Server 2003 文件路径过长导致最末文件夹权限无法继承上层文件夹权限

客户问题概括: 在Win 2003 服务器上客户访问本地一些目录的文件提示拒绝访问. 客户已发现尝试对相关文件owner更改为当前登录用户或者本地管理员用户组成员,然后添加本地管理员组为此文件无安全控制权限即可访问此文件. 客户要求需要用一种命令行方式对有问题的目录下所有文件或目录进行上述问题的更改,以达到可以正常访问文件目的. 解决方法:使用subinacl 命令行工具来进行相应操作即可. 1.下载subinacl工具.2.使用subinacl进行相应权限的更改. 举例:C:\errFolde

文件特殊权限 SUID\SGID\SBIT

一.SUID 可以查看/usr/bin/passwd文件参照 该文件在属主上有s权限,就是我们说的SUID特殊权限,可以使用数字4添加 如:chmod 4xxx /usr/bin/passwd 该特殊权限指的是:用户在执行该文件时,有文件属主的权限 举个栗子: 使用www用户执行/usr/bin/passwd,由于/usr/bin/passwd有SUID特殊权限,而/usr/bin/passwd的属主是root,所以www用户执行/usr/bin/passwd就相当于root用户来执行/usr/