`

Linux:suid sgid sticky-bit

 
阅读更多

三种特殊权限简介
SUID

当一个设置了SUID 位的可执行文件被执行时,该文件将以所有者的身份运行,也就是说无论谁来执行这个文件,他都有文件所有者的特权。

如果所有者是 root 的话,那么执行人就有超级用户的特权了。

SGID

当一个设置了SGID 位的可执行文件运行时,该文件将具有所属组的特权, 任意存取整个组所能使用的系统资源。

若一个目录设置了SGID,则所有被复制到这个目录下的文件, 其所属的组都会被重设为和这个目录一样,除非在复制文件时加上-p (preserve,保留文件属性)的参数,才能保留原来所属的群组设置。

sticky-bit

对一个文件设置了sticky-bit之后,尽管其他用户有写权限, 也必须由属主执行删除、移动等操作。

对一个目录设置了sticky-bit之后,存放在该目录的文件仅准许其属主执行删除、 移动等操作。

特殊权限的数值表示
三种特殊权限可以用单独的一位8进制数值表示

SUID、SGID和sticky-bit的数值表示

SUID SGID sticky 二进制 八进制 说明
- - - 000 0 不设置特殊权限
- - t 001 1 只设置sticky
- s - 010 2 只设置SGID
- s t 011 3 只设置SGID和sticky
s - - 100 4 只设置SUID
s - t 101 5 只设置SUID和sticky
s s - 110 6 只设置SUID和SGID
s s t 111 7 设置三种特殊权限

我们知道了文件的权限可以用三个八进制数字表示。其实文件的权限应该用四个八进制来表示,不过用 ls -l 命令时,只显示三个罢了。那个没有显示的八进制数字其实是第一个,它用来设定一些特殊权限。这个八进制数字的三个位是:
SUID SGID sticky-bit
它们的含义是:

SUID
当设置了SUID 位的文件被执行时,该文件将以所有者的身份运行,也就是说无论谁来执行这个文件,他都有文件所有者的特权。如果所有者是 root 的话,那么执行人就有超级用户的特权了。这时该位将变成一个安全漏洞,因此不要轻易设置该位。

SGID
与上面的内容类似。文件运行时,运行者将具有所属组的特权。

sticky-bit

sticky 位要求操作系统既是在可执行程序退出后,仍要在内存中保留该程序的映象。这样做是为了节省大型程序的启动时间。但是会占用系统资源。因此设置该位,不如把程序写好。

set uid ;set gid;sticky bit区别

每一个文件有所有者及组编号,set uid ;set gid可以改变用户对文件具有的权限:写和执行.

setuid: 在执行时具有文件所有者的权限.
setgid: 设置目录. 一个目录被标上setgid位,此目录下创建的文件继承该目录的属性.
sticky bit: 该位可以理解为防删除位. 设置sticky bit位后,就算用户对目录具有写权限,但也只能添加文件而不能删除文件。


如何设置:

操作这些标志与操作文件权限的命令是一样的, 都是 chmod. 有两种方法来操作,
1) chmod u+s temp -- 为temp文件加上setuid标志. (setuid 只对文件有效,U=用户)
chmod g+s tempdir -- 为tempdir目录加上setgid标志 (setgid 只对目录有效,g=组名)
chmod o+t temp -- 为temp文件加上sticky标志 (sticky只对文件有效)

2) 采用八进制方式. 这一组八进制数字三位的意义如下,
abc
a - setuid位, 如果该位为1, 则表示设置setuid
b - setgid位, 如果该位为1, 则表示设置setgid
c - sticky位, 如果该位为1, 则表示设置sticky

设置后, 可以用 ls -l 来查看. 如果本来在该位上有x, 则这些特殊标志显示为小写字母 (s, s, t). 否则, 显示为大写字母 (S, S, T)
如:

rwsrw-r-- 表示有setuid标志 (rwxrw-r--:rwsrw-r--)
rwxrwsrw- 表示有setgid标志 (rwxrwxrw-:rwxrwsrw-)
rwxrw-rwt 表示有sticky标志 (rwxrw-rwx:rwxrw-rwt)

理解文件权限

所谓的文件权限,是指对文件的访问权限,包括对文件的读、写、删除、执行。Linux 是一个多用户操作系统,它允许多个用户同时登录和工作。因此 Linux 将一个文件或目录与一个用户和组联系起来。请看下面的例子:

drwxr-xr-x 5 root root 1024 Sep 13 03:27 Desktop

与 文件权限相关联的是第一、第三、第四个域。第三个域是文件的所有者,第四个域是文件的所属组,而第一个域则限制了文件的访问权限。在这个例子中,文件的所 有者是 root,所属的组是 root,文件的访问权限是 drwxr-xr-x。对于文件和目录讲,每个文件和目录都有一组权限标志和它们结合在一起,在上例中就是第一个域中的内容。下面来仔细分析这个域中各个 符号的意义:

该域由 10 个字符组成,可以把它们分为四组,具体含义分别是:

d rwx r-x r-x

文件类型 所有者权限标志 组权限标志 其他用户权限标志

其中:

文件类型:第一个字符。由于 Linux 系统对与设备、目录、文件都当作是文件来处理,因此该字符表明此文件的类型,字符与对应的意义如下表: 文件标志
文件类型
例子

-
普通文件
数据文件、

ASCII 纯文本文件、程序
d
目录
/bin

b
块设备
/dev/hda(第一个 IDE 硬盘)

c
字符设备
/dev/ttyS1(与 DOS 种的串口 2 等同)

s
套接字
/dev/log

p
命名管道
/dev/initctl(与“|”等同)

l
符号链接
/dev/modem->/dev/ttyS1




权限标志:

对每个文件或目录都有 4 类不同的用户。每类用户各有一组读、写和执行(搜索)文件的访问权限,这 4 类用户是:

root:系统特权用户类,既 UID = 0 的用户。

owner:拥有文件的用户。

group:共享文件的组访问权限的用户类的用户组名称。

world:不属于上面 3 类的所有其他用户。

作为 root,他们自动拥有了所有文件和目录的全面的读、写和搜索的权限,所以没有必要明确指定他们的权限。其他三类用户则可以在耽搁文件或者目录的基础上别 授权或撤消权限。因此对另外三类用户,一共 9 个权限位与之对应,分为 3 组,每组 3 个,分别用 r、w、x 来表示,分别对应 owner、group、world。

权限位对于文件和目录的含义有些许不同。每组 3 个字符对应的含义从左至右的顺序,对于文件来说是:读文件的内容(r)、写数据到文件(w)、做为命令执行该文件(x)。对于目录来说是:读包含在目录中 的文件名称(r)、写信息到目录中去(增加和删除索引点的连接)、搜索目录(能用该目录名称作为路径名去访问它所包含的文件或子目录)。具体来说就是:

1. 有只读权限的用户不能用 cd 进入该目录;还必须有执行权限才能进入。

2. 有执行权限的用户只有在知道文件名并拥有该文件的读权限的情况下才可以访问目录下的文件。

3. 必须有读和执行权限才可以使用 ls 列出目录清单,或使用 cd 进入目录。

4. 如用户有目录的写权限,则可以创建、删除或修改目录下的任何文件或子目录,既是该文件或子目录属于其他用户。

修改文件权限

首先讲修改文件的所有权,使用 chown 和 chgrp 命令:

chown new_user file or directory:修改文件或目录的所有者。

chgrp new_group file or directory:修改文件或目录的所属组。

这里需要注意的是:普通用户不能将文件或目录的所有权交与他人,只有 root 有这一权限。但是普通用户有权改变文件或目录的所属组。


由 于每类用户的权限都是由 rwx 三位组成,因此可以用三个八进制数字表示文件的访问权。一个八进制数字可以用三个二进制数字表示,那么与其对应,权值为 4 的位对应 r,权值为 2 的位对应 w,权值为 1 的位对应 x。对于一类用户,将这三位与其对应的权值相乘求和,就可以得出对该类用户的访问权限。

改变文件访问权限的命令是 chmod,格式是:

chmod permission file_name

比如 chmod 764 a.txt,它表示对于文件的所有者,具有对该文件读、写、执行的权限。对于文件所属组的用户,拥有读、写的权限。对于其他用户,只有读权限。

这里需要注意的是:文件的创建者是唯一可以修改该文件访问权限的普通用户,另外一个可以修改文件访问权限的用户是 root。

还有一种表示方法,就是用字符串来设定文件访问权限。其中读用 r 表示,写用 w 表示,执行用 x 表示;所有者用 u 表示,组用户用 g 表示,其他用户用 o 表示,所有用户用 a 表示。

分享到:
评论

相关推荐

    第7章-文件系统基本权限和高级权限管理1

    第七章 Centos7-文件权限管理本节所讲内容:7.1文件的基本权限:r w x (UGO)7.2文件的特殊权限:suid sgid sticky和文件扩展权

    特殊权限SUID SGID SBIT.doc

    特殊权限SUID SGID SBIT.doc

    linux中SUID,SGID与SBIT的奇妙用途详解

    linux对文件的权限管理简直是让人叹为观止,又回顾了一下SUID,SGID和SBIT的作用,总结一下。 其实SUID和SGID的作用跟sudo是相似的。当用户A想执行一个原本属于用户B的可执行文件时,若B的文件设置了suid位,则A在...

    perl-suid_5.8.8-12ubuntu0.5_i386(1).deb

    Perl是流行的跨平台编程语言。 部分Perl脚本在处理PERLIO_DEBUG变量时存在问题,本地攻击者可以利用这个漏洞破坏系统文件或进行缓冲区溢出攻击。

    第63天:权限提升-Linux脏牛内核漏洞&SUID&信息收集1

    #案例 3-Linux 提权本地配合内核漏洞演示-Mozhe提权过程:连接-获取可利用漏洞-下载或上传 EXP-编译 EXP-给权限执行-GG#案例 4-Lin

    linux之特殊权限

    特殊权限:SUID SGID STICKY 安全上下文: 1.进程以某用户的身份运行,进程是发起此进程用户的代理,因此以此用户的身份和权限完成所有操作 2.权限匹配模型: (1)判断进程的属主,是否为被访问的文件属主:如果是,则...

    suid-locate:在Linux系统中轻松找到带有SUID或SGID位的文件

    SUID定位 正确使用带有SUID / SGID的文件可能非常方便,但是,它会使您的系统面临许多安全风险。 SUID-Locate可以在Linux系统中轻松找到带有SUID或SGID位的文件。 作者 Kfir Shtober(Kfiros)2015

    Linux中特殊权限SUID、SGID与SBIT的深入讲解

    linux对文件的权限管理简直是让人叹为观止,所以这篇文章主要给大家介绍了关于Linux中特殊权限SUID、SGID与SBIT的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面随着小编来一起学习学习吧

    rand-token-meteor:rand-token-流星

    MeteorJS 的 rand-token 从您选择的随机性中生成随机令牌。 安装 meteor add nyablonskiy:rand-token用法 // Generate a 16 character alpha-...// Generate mostly sequential tokens:var token = RandToken.suid(16);

    Linux操作系统实验二.doc

    文件的特殊权限: SUID、 SGID 和Sticky 4、文件的链接: (文件和目录名自拟、自行设计实验步骤) (1)硬链接:不带选项,ln命令创建硬链接。在另外的目录或本目录中增加目标文件的一个目录项,一个文件就登记在多个...

    Firejail是Linux命名空间和seccomp-bpf沙箱-Linux开发

    Firejail是一个SUID沙箱程序,它使用Linux名称空间,seccomp-bpf和Linux功能来限制不受信任的应用程序的运行环境,从而降低了违反安全性的风险。 它允许进程及其所有后代对全局共享的内核资源(例如,网络堆栈,进程...

    Alpinelinux 3.7 aarch64 raspberrypi 3:为raspberrypi3构建的AlpineLinux 3.7 aarch64内核4.10.17-v8 +-开源

    -内核:4.10.17-v8 +-已安装的软件包列表:musl busybox alpine-baselayout openrc alpine-conf libressl2.6-libcrypto libressl2.6-libssl zlib apk-tools busybox-suid busybox-initscripts scanelf musl-utils ...

    linux suid权限维持速查表1

    linux suid权限维持速查表linux suid 权限维持速查表赋权姿势:linux suid权限维持速查表linux suid权限维持速查表linux

    firejail:Linux 命名空间沙箱程序-开源

    Firejail 是一个 SUID 程序,它通过使用 Linux 命名空间和 seccomp-bpf 限制不受信任的应用程序的运行环境来降低安全漏洞的风险。 它允许进程及其所有后代拥有自己的全局共享内核资源的私有视图,例如网络堆栈、进程...

    linux基础教程之特殊权限SUID、SGID和SBIT

    主要给大家介绍了关于linux基础教程之特殊权限SUID、SGID和SBIT的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

    第64天:权限提升-Linux定时任务&环境变量&数据库1

    1.提权环境,信息收集(SUID,定时任务,可能漏洞,第三方服务应用等) 2.最新相关漏洞要明确(关注点),二次开发相关脚本学会展望(四个脚本) 3.本地 se

    firejail:Linux名称空间和seccomp-bpf沙箱

    Firejail是一个SUID沙盒程序,它使用Linux名称空间,seccomp-bpf和Linux功能来限制不受信任的应用程序的运行环境,从而降低了违反安全性的风险。 它允许进程及其所有后代对全局共享的内核资源(例如,网络堆栈,...

Global site tag (gtag.js) - Google Analytics