SUID和SGID位简介

转载 2016年06月01日 14:16:21

第一部分:UID与SGID

UID 是 Set User IDSGID 是 Set Group ID的意思。

UNIX下可以用ls -l 命令来看到文件的权限。用ls命令所得到的表示法的格式是类似这样的:-rwxr-xr-x 。下面解析一下格式所表示的意思。这种表示方法一共有十位:

9 8 7 6 5 4 3 2 1 0

- r w x r - x r - x

 

第9位表示文件类型,可以为p、d、l、s、c、b和-:

p 表示命名管道文件

d 表示目录文件

l 表示符号连接文件

- 表示普通文件

s 表示socket文件

c 表示字符设备文件

b 表示块设备文件

 

第8-6位、5-3位、2-0位分别表示文件所有者的权限,同组用户的权限,其他用户的权限,其形式为rwx:

r表示可读,可以读出文件的内容

w表示可写,可以修改文件的内容

x表示可执行,可运行这个程序

没有权限的位置用-表示

 

例子:

ls -l myfile显示为:

-rwxr-x--- 1 foo staff 7734 Apr 05 17:07 myfile

表示文件myfile是普通文件,文件的所有者是foo用户,而foo用户属于staff组,文件只有1个硬连接,长度是7734个字节,最后修改时间4月5日17:07。

所有者foo对文件有读写执行权限,staff组的成员对文件有读和执行权限,其他的用户对这个文件没有权限。

 

介绍如果一个文件被设置了SUID或SGID位,会分别表现在所有者或同组用户的权限的可执行位上。例如:

1、-rwsr-xr-x 表示SUID和所有者权限中可执行位被设置

2、-rwSr--r-- 表示SUID被设置,但所有者权限中可执行位没有被设置

3、-rwxr-sr-x 表示SGID和同组用户权限中可执行位被设置

4、-rw-r-Sr-- 表示SGID被设置,但同组用户权限中可执行位没有被社

 

其实在UNIX的实现中,文件权限用12个二进制位表示,如果该位置上的值是

1,表示有相应的权限:

11 10 9 8 7 6 5 4 3 2 1 0

S  G  T r w x r w x r w x

第11位为SUID位,第10位为SGID位,第9位为sticky位,第8-0位对应于上面的三组rwx位。

11 10 9 8 7 6 5 4 3 2 1 0

 

例如上面的-rwsr-xr-x的值为:

1 0 0 1 1 1 1 0 1 1 0 1

 

-rw-r-Sr--的值为:

0 1 0 1 1 0 1 0 0 1 0 0

 

给文件加SUID和SUID的命令如下:

chmod u+s filename 设置SUID位

chmod u-s filename 去掉SUID设置

chmod g+s filename 设置SGID位

chmod g-s filename 去掉SGID设置

另外一种方法是chmod命令用八进制表示方法的设置。如果明白了前面的12位权限表示法也很简单,这里就不在介绍了,O(∩_∩)O~。

 

第二部分

 

1.写出一行linux命令列出根目录下所有suid程序。描述linux下setuid/seteuid/setreuid这几个函数的功能和差异。

解答:

find / -perm -04000 -type f -ls

 

#include<unistd.h>

int setuid(uid_t uid)

函数说明:

setuid()用来重新设置执行目前进程的用户识别码。不过,要让此函数有作用,其有效的用户识别码必须为0(root)。在Linux下,当root 使用setuid()来变换成其他用户识别码时,root权限会被抛弃,完全转换成该用户身份,也就是说,该进程往后将不再具有可setuid()的权 利,如果只是向暂时抛弃root 权限,稍后想重新取回权限,则必须使用seteuid()。

返回值:执行成功则返回0,失败则返回-1,错误代码存于errno

注意:一般在编写具setuid root的程序时,为减少此类程序带来的系统安全风险,在使用完root权限后建议马上执行setuid(getuid());来抛弃root权限。此外,进程uid和euid不一致时Linux系统将不会产生core dump

 

seteuid(设置有效的用户识别码)

#include <unistd.h>

int seteuid(uid_t euid);

函数说明  :seteuid()用来重新设置执行目前进程的有效用户识别码。在Linux下,seteuid(euid)相当于setreuid(-1,euid)。

返回值: 执行成功则返回0,失败则返回-1,错误代码存于errno

附加说明: 请参考setuid()

 

#include <unistd.h>

setreuid(uid_t ruid, uid_t euid)

函数说明:

来设定真实用户ID(real uid)和有效用户ID(effective uid),这个函数在由有效用户ID符为0的进程调用时,不会改变已保存用户ID。

注意:函数seteuid(uid_t uid)等价于setreuid(-1,uid),只改变有效用户ID(effective uid)。

 

2.有些入侵者入侵系统后,喜欢隐藏一个suid root shell文件以便下次再进入。对于这种后门应该如何进行检测?

解答:

系统管理员应该定期查看系统中有哪些 SUID 和 SGID文件,可以用下面的命令实现: 

find / -type f ( -perm -4000 -o -perm -2000 )  –print。

 

3.Gdb一个suid程序,该程序在被gdb调试执行时是否依然拥有文件owner权限?解释原因。

 

解答:具有 owner权限,因为它执行该文件时其 effective user ID置为 owner的id


转载:http://blog.sina.com.cn/s/blog_70dd16910100pxj1.html

linux中SUID,SGID和SBIT的奇妙用途

linux的SUID,SGID和SBIT的相关介绍和讨论
  • xiaocainiaoshangxiao
  • xiaocainiaoshangxiao
  • 2013年12月17日 16:56
  • 18099

linux下:SUID、SGID详解

文章转载至:http://tech.ccidnet.com/art/2583/20071030/1258885_1.html 如果你对SUID、SGID仍有迷惑可以好好参考一下! Copyright...
  • u011774239
  • u011774239
  • 2016年04月29日 11:59
  • 503

深入Linux文件权限 SUID/SGID/SBIT

Linux的文件权限除了rwx之外,还有s和t这两个特殊的。
  • imkelt
  • imkelt
  • 2016年11月06日 14:35
  • 1620

关于SUID、SGID、SBIT

在linux里提到操作权限的时候往往是说对应三种角色(所有者、本组人、其他人)分别有三种权限(r、w、x),这样组合起来,就是3*3=9种。分别用9个标志位来记录。用ls –l来观察文件属性会显示这9...
  • zjc
  • zjc
  • 2014年10月10日 23:30
  • 1409

SUID和SGID是什么鬼

待研究
  • weizivera
  • weizivera
  • 2017年03月14日 15:34
  • 108

Linux文件特殊权限:SUID、SGID和SBIT

1.SUID 当s这个标志出现在文件所有者的x权限上时,例如文件权限状态“-rwsr-xr-x”,此时就称为 Set UID,简称为SUID的特殊权限。SUID有这样的限制和功能: (1)SUID权限...
  • sinat_30071459
  • sinat_30071459
  • 2016年04月22日 09:50
  • 2655

SUID/SGID的使用

一、LUNIX下关于文件权限的表示方法和解析 SUID 是 Set User ID, SGID 是 Set Group ID的意思。 UNIX下可以用ls -l 命令来看到...
  • neopark
  • neopark
  • 2016年09月04日 18:37
  • 166

centos 中SUID和SGID的分析

在看《鸟哥的Linu》的
  • u012291393
  • u012291393
  • 2014年09月13日 14:36
  • 777

详解Linux中文件的特殊权限:SGID、SUID、SBIT

本文主要介绍了SGID、SUID、SBIT各自的概念和功能,以及如何设置他们。
  • qq_14982047
  • qq_14982047
  • 2016年02月25日 17:44
  • 496

SUID 和 SGID 的比较

导读:SUID 和 SGID 的比较 由于用户在UNIX下经常会遇到SUID、SGID的概念,而且SUID和SGID涉及到系统安全,所以用户也比较关心这个问题。关于SUID、SGID的问题...
  • turkeyzhou
  • turkeyzhou
  • 2008年05月07日 11:00
  • 761
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:SUID和SGID位简介
举报原因:
原因补充:

(最多只允许输入30个字)