文件的特殊权限有三种:1、suid;2、sgid;3、sticky,其中,suid和sgid用于累加提升权限,简单来说就是如果原来的用户可以访问,反而切换到的用户或者组不能访问,这时候照样是可以访问的,下面介绍下这三种权限。
SUID:
1、需要注意的是,只对二进制可执行程序有效,不能为普通文件;
2、发起者对程序文件必须拥有执行权限;
3、启动为进程之后,其进程的宿主为原程序文件的宿主;
4、SUID设置在目录上毫无意义。
SGID:
可以应用在二进制文件和作用在文件夹下,当作用在二进制文件下时,作用和SUID相似,只不过SUID是把发起者临时变为文件的所有者,而SGID是把进程的发起者变成源程序文件的属组,默认情况下,用户创建文件时,其属组为此用户所属的主组,当SGID作用在目录下时,则对此目录有写权限的用户在此目录中创建的文件所属的组为此目录的属组,通常用于创建一个协作目录。
Sticky:
默认情况下用户可以删除具有写权限的目录中的任何文件,无论该文件的权限或拥有权,如果在目录设置Sticky位,只有文件的所有者或root可以删除该文件,Sticky位是作用在文件夹的,设置在文件上毫无意义。
1SUID的作用仅针对于二进制程序。
2使用者(假设为我吧)要对该二进制程序有"x"权限
3"以文件拥有者的身份"只在执行过程中有效(执行过程中我获得了该程序owner的权限)
例子就好比 /usr/bin/passwd 这个二进制文件。
它的权限是 -rwsr-xr-x ,我不是所有者,我具有"x"权限,我执行它时,获得了它的所 有者(即root)的权限,所以在该二进制程序执行时,我可以用它来读到我平时是没有权限访问的 /etc/shadow 文件(-r--------),从而能更改我自己的密码。
由于能力有限只能回答这些,但是建议查看刘遄老师的《linux就该这么学》这本比肩鸟哥私房菜的但与时俱进的工具书
SUID 权限仅对二进制程序(binary program)有效;
执行者对于该程序需要具有 x 的可执行权限;
本权限仅在执行该程序的过程中有效 (run-time);
执行者将具有该程序拥有者 (owner) 癿权限。
不 SUID 不同癿是,SGID 可以针对档案或目录设定!如果是对档案来说, SGID 有如下功能:
SGID 对二进制程序有用;
程序执行者对于该程序来说,需具备 x 的权限;
执行者在执行的过程中将会获得该程序群组的支持!
Sticky Bit, SBIT 目前叧针对目录有效,对亍档案已经没有效果了。 SBIT 对于目录的作用是:
当用户对于此目录具有 w, x 权限,亦即具有写入的权限时;
当用户在该目录下建立档案或目录时,仅有自己和root 才有权力删除该档案
SUID可以使执行此文件的人在执行它时具有属主的权限。主要是用于二进制执行文件,对于文本文件、非执行文件及脚本等无效。
SGID类似SUID,不过是换成文件属组的权限。主要用于目录,对于设置了SGID的目录,有写权限的用户在此目录下创建的文件,其属组为目录的属组。
SUID、SGID都是针对二进制执行文件的,SGUI对目录权限管理有用。如果不需要这些权限控制,文件或目录设置这些权限没有什么用处,去除了也无所谓。
默认情况下用户发起一个进程,进程的属主是进程的发起者,也就是说这个进程是以发起者的身份运行。
SUID:
功用:用户运行某个程序时,如果该程序有SUID权限,那么程序运行为进程时,进程的属主不是发起者,而是程序文件所属的属主。
作用:只作用于二进制文件中。
如创建一个test文件,并设置权限为"---------"且属主和属组都是root
此时只有root用户对"test"文件可以进行 *** 作,如cat等 *** 作。接下来用其它用户来对"test"文件进行 *** 作,观察其变化。
切换到普通用户zhangsan
无权限。
什么是Suid Shell?
Suid shell是一种可用于以拥有者权限运行的shell。也就是说,如果拥有者
是root,那你就可能以root的
身份执行命令。普通的shell文件属性为rwxr-xr-x,拥有者为root,root可读/写
/执行这个shell,而其他用户
则只能以自己的权限读和运行它。然而,如果有一个文件属性为rwsr-xr-x的she
ll,就可以获得文件拥有者权
限;如果文件拥有者是root,那么任何运行了这个shell的用户便可以控制整个系
统,如增加用户、修改root口
令、清除日志等等。
为什么需要它?
这是一个非常容易回答的问题。当通过某些方法进入系统后,如果系统管理
员有一定的水平,会很快发现
问题。通常他们会查看日志和修改root口令,你可能就要跟这个系统说再见了。
这就是需要suid shell的原因 。:)
怎样才能得到suid shell呢?
首先你要足够狡猾,这取决于你面对的是什么样的系统管理员。当你用尽一
切方法,如猜口令、苦难root 、
安全漏洞攻击等等,终于成功地取得了root权限,尽快找到一个几乎从未使用过
的目录。无论如何,不要将
suid shell放在你的主目录下。一个比较好的地方是/usr下的深层子目录,如/u
sr/X11/include/X11/。这个目
录几乎不会有人进去的,而且很少会因存放过多文件而使系统管理员检查里面的
文件。另外,suid shell的名
字应该尽量与其它文件相似。例如,在这个目录下有synch、shapeh等文件,s
uid shell可以取parth这种隐
蔽性较好的名字。
另一个比较好的地方是将suid shell与其它suid程序放置在一起,如/usr/s
bin,并同样取一个隐蔽的名字。
接着,就是在这些目录下创建suid shell了。如:
cp /bin/sh /usr/X11/include/X11/extensions/parth
chmod 4755 /usr/X11/include/X11/extensions/parth
注意,为了使整个过程在最短的时间内完成,应该在进入系统前做好相应准
备。最好在尝试攻击前仔细研
究系统和计划。另外总是多创建几个suid shell,这样即使其中一个被发现了,
仍然有通过使用其它
suid shell控制系统的机会。
如何利用suid shell呢?
在许多系统中,往往限制用户所能使用的shell。这个只要检查一下/etc下的
相应文件就能知道。在Linux
系统中这个文件是/etc/shells,其中列出了所有的shell程序。但你可以用suid
shell做任何事!例如,你准
备将/etc/passwd改名为/etc/passwdheh,编写如下脚本即可:
#!/usr/X11/include/X11/extensions/parth
mv /etc/passwd /etc/passwdheh
exit
(这只是个示例,最好别这样做:))
上面的例子好象只提供了一个非交互的程序,但只要精心编写脚本,同样可
以实现虚拟的“交互”程序。
UID:真实的用户ID 进程的UID就是其创建者的用户ID,用于标识进程的属主。
EUID:有效的用户ID(我理解是文件所有者)
(1)只有进程的创建者和root用户才有权利对该进程进行 *** 作。于是,记录一个进程的创建者(也就是属主)就显得非常必要。
(2)EUID,用来确定进程对某些资源和文件的访问权限。在大多数情况下,进程的UID和EUID是一样的 —— 除了著名的setuid程序。
(3)什么是setuid程序? 例如:passwd命令,这个命令允许用户修改自己的登录口令。但是密码保存在/etc/shadow文件中,这个文件对普通用户是不可读的,那么用户怎么能够通过修改shadow文件来修改自己的口令呢?这就是setuid的妙处了。
setuid通过使passwd在执行阶段具有文件所有者(也就是root)的权限,让用户临时有了修改shadow文件的能力(当然这种能力是受到限制的)。因此,passwd就是一个经典的setuid程序,其UID是当前执行这个命令的用户ID,而EUID则是root用户的ID(也就是0)
最近想着学习linux提权的一些姿势,这里简单分享学习SUID提权的一些知识点。
先来父复习一下linux文件的权限分配。
ls命令用来查看系统上面的文件、目录的权限。
字段的第一个字符表示对象的类型。
之后是每三个字符为一组,每一组定义了3种访问权限。
这三组分别表示文件所有者(Owner)、用户组(Group)、其它用户(Other Users)。
然后规定用数字4、2和1表示读、写、执行权限。即r=4,w=2,x=1。
所以
chmod改变权限
chown用来更改某个目录或文件的用户名和用户组
该命令需要root权限运行
而文件权限除了r、w、x外还有s、t、i、a权限。
SUID
当执行的文件被赋予了s权限,就被称为Set UID,简称为SUID的特殊权限。八进制数为4000。
举个例子:
linux修改密码的passwd就是个设置了SUID的程序。因为如果普通账号cseroad需要修改密码,就要访问/etc/shadow,但是该文件只有root能访问。那他是怎么修改的呢?原理:
查看该程序,发现被赋予了s权限。当cseroad需要修改自己的密码时,passwd程序的所有者为root,cseroad用户执行passwd 程序的过程中会暂时获得root权限,所以可以修改/etc/shadow文件。
SGID
而当s标志出现在用户组的x权限时则称为SGID。八进制数为2000。
当用户对某一目录有写和执行权限时,该用户就可以在该目录下建立文件,如果该目录用SGID修饰,则该用户在这个目录下建立的文件都是属于这个目录所属的组。(父目录跟随)
SBIT
就是Sticky Bit,出现在目录的其他用户执行权限X上,标记为T,八进制数为1000。对目录有效,使用者只能对自己创建的文件或目录进行删除/更名/移动等动作,而无法删除他人文件(除非ROOT)
赋予s权限:chmod 4755 filename 或者 chmod u+s /usr/bin/find
取消s权限:chmod 755 filename 或者 chmod u-s /usr/bin/find
以centos为例。
还有额外的几个命令
我们就可以通过覆盖/etc/passwd文件,提权为root
默认该命令没有s权限
find命令
假如find命令被赋予s权限。
创建atxt文件,执行 /usr/bin/find atxt -exec /bin/bash -p \; ,成功提权。
这里注意的是新版Linux系统对子进程的suid权限进行了限制,不同的 *** 作系统结果也会不一样。
具体细节参考 >
以上就是关于Linux特殊权限 SUID、SGID、Sticky全部的内容,包括:Linux特殊权限 SUID、SGID、Sticky、linux文件用户权限中的SUID有什么用、档案特殊权限:SUID, SGID, SBIT等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)