Linux上文件的特殊权限SUID,SGID,SBIT详解

简介:

在linux下,除了rwx权限外,有时会看到s,t这样的权限。这些是linux下的特殊权限,包括SUID,SGID,SBIT。

SUID是什么?

SUID,全称Set User ID,简单来说就是让用户在执行程序时,身份会变成该程序的所有者,这样就能拥有程序所有者的所有权利。举个例子:

linux特殊权限suid演示文件列表

linux特殊权限suid演示文件列表

其中:

  • a.out是test.c编译后的文件。

  • test.c的内容就是从test.txt读取内容,然后打印出来。

  • test.txt的内容就是hello。

从上面来看,3个文件的所有者都是root,用root账号来执行程序:

$ ./a.out
hello

一切正常。换一个账号iceup来执行程序:

$ ./a.out
~·

在笔者的电脑上输出了奇怪的符号,这个是什么符号暂时不管它,总的来说就是没有读到test.txt的内容,原因显而易见,因为iceup没有test.txt的读取权限。

接下来设置a.out这个文件的SUID,来看下不同之处。切换回root账号,修改a.out的SUID:

chmod u+s a.out

看下文件的权限属性变化:

linux特殊权限suid演示

linux特殊权限suid演示

可以看到a.out用户权限位最有一位变成了s的权限,文件名还有个红色背景。切换到iceup账号,再次执行a.out,成功输出了hello。为什么会这样呢?因为有了这个s权限,iceup在执行a.out的时候,身份转为了a.out的所有者root,这样自然就能从test.txt读取内容了。

SGID是什么?

SGID,全称Set Group ID,和SUID类似,只是转换的身份不是用户,而是用户组。概括说明就是用户在执行程序时,所属用户组会临时转为该程序所属的用户组,这样就能拥有程序所属用户组的所有权利。

因为和SUID类似,就不用实例演示了。修改SGID用chmod命令:

chmod g+s a.out

linux特殊权限sgid演示

linux特殊权限sgid演示

a.out的用户组权限最后一位变成了s,文件名有个黄色背景。

SBIT是什么?

SUID是用在用户权限位上,SGID是用在用户组权限位上,还有一个other权限位,其实就是留给SBIT用的,但是SBIT和SUID、SGID不一样。SBIT全称Sticky Bit,概括来讲:就是很多个用户在同一个目录下都能写文件和删除文件,但是大家都只能操作自己的文件,不能操作其他人的文件,只有root和该目录的所有者才能操作目录下的文件。

创建一个目录,设置SBIT权限:

$ mkdir test && chmod 777 test && chmod o+t test

linux特殊权限sbit演示

linux特殊权限sbit演示

这个目录所有用户都有写权限,other的最后一个权限位是t,文件名背景色变成了绿色。切换到上面使用的iceup账号,在test下创建一个文件iceup.txt,再切换一个账号iceup2,来删除iceup.txt这个文件试一下。

$ rm test/iceup.txt
rm: remove write-protected regular file `iceup.txt'? y
rm: cannot remove `iceup.txt': Operation not permitted

不能删除,系统提示不允许,这个就是SBIT的用处了。

总结:

在linux系统下,也能找到3种特殊权限的实践案例:

ls -ld  /usr/bin/passwd /usr/bin/mlocate /tmp

linux特殊权限实践

linux特殊权限实践

设置SUID,SGID和SBIT除了使用上面的方法,还可以使用数字来表示,以前看到这样的权限0777,其实最前面的0就是表示特殊权限, 其中:

  • SUID 用4表示

  • SGID 用2表示

  • SBIT 用1表示

例如4777就是设置文件拥有SUID权限。不过有一点要注意:如果用户没有文件执行权限,连文件都不能执行了,那么SUID,SGID和SBIT又有什么意义呢?在这种情况下,s、t会变成大写的S、T。


本文转自 游骑兵vtx 51CTO博客,原文链接:http://blog.51cto.com/qibingtuan/1980490


相关文章
|
11月前
|
存储 数据管理 Linux
区分Linux中.tar文件与.tar.gz文件的不同。
总之,".tar"文件提供了一种方便的文件整理方式,其归档但不压缩的特点适用于快速打包和解压,而".tar.gz"文件通过额外的压缩步骤,尽管处理时间更长,但可以减小文件尺寸,更适合于需要节约存储空间或进行文件传输的场景。用户在选择时应根据具体需求,考虑两种格式各自的优劣。
1856 13
|
12月前
|
安全 Linux
Linux赋予文件000权限的恢复技巧
以上这些步骤就像是打开一扇锁住的门,步骤看似简单,但是背后却有着严格的逻辑和规则。切记,在任何时候,变更文件权限都要考虑安全性,不要无谓地放宽权限,那样可能
417 16
|
Linux
【Linux】 Linux文件I/O常见操作技巧
以上就是Linux文件I/O操作的一些技巧,接纳它们,让它们成为你在Linux世界中的得力伙伴,工作会变得轻松许多。不过记住,技巧的运用也需要根据实际情况灵活掌握,毕竟,最适合的才是最好的。
351 28
|
12月前
|
存储 Linux 数据处理
深入剖析Linux中一切即文件的哲学和重定向的机制
在计算机的奇妙世界中,Linux的这套哲学和机制减少了不同类型资源的处理方式,简化了抽象的概念,并蕴藏着强大的灵活性。就像变戏法一样,轻轻松松地在文件、程序与设备之间转换数据流,标准输入、输出、错误流就在指尖舞动,程序的交互和数据处理因此变得既高效又富有乐趣。
217 4
|
Ubuntu Linux
"unzip"命令解析:Linux下如何处理压缩文件。
总的来说,`unzip`命令是Linux系统下一款实用而方便的ZIP格式文件处理工具。本文通过简明扼要的方式,详细介绍了在各类Linux发行版上安装 `unzip`的方法,以及如何使用 `unzip`命令进行解压、查看和测试ZIP文件。希望本文章能为用户带来实际帮助,提高日常操作的效率。
3417 12
|
Linux Shell 数据安全/隐私保护
Centos或Linux编写一键式Shell脚本创建用户、组、目录分配权限指导手册
Centos或Linux编写一键式Shell脚本创建用户、组、目录分配权限指导手册
645 3
linux文件重命名命令
本指南介绍Linux文件重命名方法,包括单文件操作的`mv`命令和批量处理的`rename`命令。`mv`可简单更改文件名并保留扩展名,如`mv old_file.txt new_name.txt`;`rename`支持正则表达式,适用于复杂批量操作,如`rename 's/2023/2024/' *.log`。提供实用技巧如大小写转换、数字序列处理等,并提醒覆盖风险与版本差异,建议使用`-n`参数预览效果。
|
Linux Windows
Linux权限命令详解(二)
Linux权限命令详解(二)
|
安全 Linux 开发工具
Linux权限命令详解(一)
Linux权限命令详解(一)
|
Linux 数据安全/隐私保护
Linux 权限常用命令
【2月更文挑战第8天】
261 2
Linux 权限常用命令