SUID和SGID位简介
第一部分:UID与SGID
UID 是 Set User ID, SGID 是 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
SUID和SGID位简介相关推荐
- Linux——SUID、SGID、SBIT简介
一.SUID.SGID.SBIT简介 SUID:对一个可执行文件,不是以发起者身份来获取资源,而是以可执行文件的属主身份来执行. SGID:对一个可执行文件,不是以发起者身份来获取资源,而是以可执行文 ...
- [转]SUID和SGID
一下转载自http://www.linuxeden.com/html/unix/20071031/36892.html 如果你对SUID.SGID仍有迷惑可以好好参考一下! 由于用户在UNIX下经常会 ...
- Linux中UID, GID, EUID, EGID,SUID、SGID讲解
UNIX下关于文件权限的表示方法 通常我们使用ls -l查看文件的权限.通常我们可以得到10位的权限表示法,如:-rwxr-xr-x.我们对于以下格式进行解析: 9 8 7 6 5 4 3 2 1 0 ...
- linux中suid和sgid作用,Linux中SUID和SGID详解
如果你对SUID.SGID仍有迷惑可以好好参考一下! 由 于用户在UNIX下经常会遇到SUID.SGID的概念,而且SUID和SGID涉及到系统安全,所以用户也比较关心这个问题.关于SUID.SGID ...
- linux:SUID、SGID详解
一.UNIX下关于文件权限的表示方法和解析 SUID 是 Set User ID, SGID 是 Set Group ID的意思. UNIX下可以用ls -l 命令来看到文件的权限.用ls命令所得到的 ...
- linux 目录的粘滞位,linux下粘滞位引出的SUID和SGID
-rwxr-xr-x 1 root root 818232 2010-04-19 09:51 /bin/bash 其中第一列即表示该文件的权限属性. 第一个字母"-",表示文件类型 ...
- 文件特殊权限suid、sgid、stick_bit、硬链接、软链接
2019独角兽企业重金招聘Python工程师标准>>> 第二章 文件.目录管理 2.18 特殊权限之 suid SUID的作用就是:让本来没有相应权限的用户运行这个程序时,可以访问没 ...
- 特殊权限控制之SUID、SGID、Sticky及facl
上次讲了基本权限管理中的chown.chgrp.chmod以及umask四个命令,今天我们来讲一讲权限最后的一点内容特殊权限位:SUID.SGID.Sticky以及facl 一.SUID 定义:运行某 ...
- 关于SUID、SGID、Sticky
SUID属性 passwd命令可以用于更改用户的密码,一般用户可以使用这个命令修改自己的密码.但是保存用户密码的/etc/shadow文件的权限是400,也就是说只有文件的所有者root用户可以写入, ...
最新文章
- 自己动手,打造轻量级VSCode/C#环境代替LinqPad
- Bzoj4817:[SDOI2017]树点涂色
- Jenkins 权限配置与集群配置
- python元组和集合的区别_python 元组与list的区别
- Markdown (H5 ) 降价
- HDU 2546 饭卡 动态规划01背包
- 一款性价比远超visio的画图小工具-Dia Diagram Editor(开源-跨平台)
- property java_java-必须为元素类型“ property”声明属性“...
- 华擎主板安装linux系统,华擎B365主板安装win7详细步骤
- 推荐一款不错的杀毒软件,还在找卡巴激活码的网友不妨进来看看!
- 红米note3照相数据丢失
- LostDungeon迷失地牢-壹
- linux下使用命令行将informix数据库表导出.unl文件
- windows平台连接EVE模拟器中网络设备两种方法
- Linux-------线程安全
- 弘辽科技:淘宝宝贝标题怎么找准关键词?做标题的3个学问
- Python爬虫爬取Twitter视频、文章、图片
- 何朝曦:构建云化安全能力的三个建议
- likely 和 unlikely
- NAM: Normalization-based Attention Module,一种新的注意力计算方式,无需额外的参数...