Linux 使用 9 个权限位来标识文件权限,三大权限分别是 r、w、x(读、写、执行)。除此之外,还有特殊权限 SUID,SGID,SBIT。

1.SUID

SUID(Set User ID)使用小写字母 s 表示,出现在属主可执行权限位,具有 SUID 权限的文件会在其执行时,使调用者的有效身份临时变为该文件的拥有者,用于临时提升权限,使调用者暂时获得该文件拥有者的权限。

例如命令 passwd 的权限:

ll /usr/bin/passwd
-rwsr-xr-x 1 root root 27832 Jun 10  2014 /usr/bin/passwd

在文件拥有者的执行位上出现 s 而不是 x,所以说 passwd 具有 SUID 权限。修改用户密码使用的是 passwd 这个命令,Linux 用户密码存储在文件 /etc/shadow 中。首先查看一下 /etc/shadow 文件的权限:

ll /etc/shadow
---------- 1 root root 853 Jan  4 14:56 /etc/shadow

可见 root 没有读写权限,但是为什么 root 实际上可以读取和修改 shadow 呢?因为 Linux 的权限管理机制不能够限制神一样的 root。从 shadow 的权限列表可以看出,root 组用户和其他用户对 shadow 没有读写权限的,也就是只有 root 才能进行强制的读写操作。但是实际上普通用户是可以自行修改自己的密码的,这就是为什么呢?因为 /usr/bin/passwd 的属主 root 对其权限是 rws,而且其他用户的使用权限为 r-x,也就是说,别人在执行 passwd 时会暂时获得 passwd 的所有者即 root 的权限。这就是 Linux 特有的 SUID 权限机制。

注意,如果在浏览文件时,发现文件所有者权限的第三位是一个大写的 S 则表明该文件的 SUID 属性无效,比如给一个没有执行权限的文件设置 SUID。

Linux 中特有的 SUID 权限机制,其过程如下图所示:

使用 SUID 需要满足以下几点:
(1)调用者对该文件有执行权;
(2)在执行过程中,调用者会暂时获得该文件的所有者权限;
(3)该权限只在程序执行的过程中有效。

2.SGID

SGID(Set Group ID)与 SUID类似,使用小写字母 s 表示,出现在用户组可执行权限位,具有 SETGID 权限的文件会在其执行时,使调用者的有效用户组临时变为该文件属主的用户组,用于临时提升权限,使调用者暂时获得该文件所属用户组的权限。

当 SGID 作用于可执行文件时,在执行该文件时,用户将获得该文件所属组的权限。

当 SGID 作用于目录时,当用户对某一目录有写和执行权限时,该用户可以在该目录下建立文件,如果该目具有 SGID 权限,则该用户在该目录下建立的文件都属于这个目录所属的组。

注意,如果在浏览文件时,发现用户组权限第三位是一个大写的 S 则表明 SGID 权限无效,比如给一个不可执行的文件设置 SGID 属性。

3.SBIT

SBIT(Sticky Bit)称为粘滞位,它出现在其他用户权限的执行位上,只能用来修饰一个目录,用于限制文件的删除。

当某一个目录拥有 SBIT 权限时,则任何一个能够在这个目录下建立文件的用户,该用户在这个目录下所建立的文件,只有该用户自己和 root 可以删除,其他用户均不可以。例如目录 /tmp 的权限如下:

ll -d /tmp
drwxrwxrwt 14 root root 147456 2月  14 16:01 /tmp

可以看到最后一位为 t,这说明目录 /tmp 具有 SBIT 权限。

注意,同样的,如果目录的其他用户的权限执行位是 T,则表示 SBIT 权限无效。发生的情况是权限的执行位不是 x。

4.SUID,SGID,SBIT 权限的设置

可以通过数字方式来设置这三个特殊权限。三个权限对应的数字为:

SUID:4
SGID:2
SBIT:1

假设要为一个文件设置权限 -rwsr-xr-x 时,由于 s 在所有者权限的执行位上,所以是 SUID,因此在原先的755 前加上 4 即可,即使用chmod 4755 filename来设置。

此外,也可以通过符号法来设置三个特殊权限,其中 SUID 为 u+s,SGID 为 g+s,SBIT 则是 o+t。

chmod u+s test
ll test
-rws--x--x 1 root root 0 Oct 30 16:10 test

5.小结

Linux 特殊权限可总结如下。

如果本来在 x 位上设置了 x 的时候,设置这些位将会显示小写的(s,s,t),否则会显示为大写的(S,S,T),表示无效。这三位如果转化为 8 进制表示,分别是 4(SUID),2(SGID),1(sticky bit)。

SUID、SGID、SBIT 权限都是为了实现特殊功能而设计的,其目的是弥补 ugo 权限无法实现的一些使用场景。

6.附:关于目录的rwx的权限的理解

(1)目录读权限位意味着可以列出其中的内容;
(2)目录写权限位意味着可以在该目录中创建、删除、更名或移动文件,前提是目录需要有执行权限;
(3)目录执行权限位则意味着可以搜索、cd进入该目录。因此在创建目录的时候一般都是具有可执行权限。


参考文献

[1] chmod manual
[2] linux中SUID,SGID和SBIT的奇妙用途
[3] linux目录文件权限的区别

Linux 文件特殊权限 SUID、SGID 与 SBIT相关推荐

  1. linux suid权限,Linux 学习:文件特殊权限SUID, SGID, SBIT

    本次记录Linux特殊权限SUID.SGID.SBIT相关知识及使用实例等. 由于SUID和SGID涉及到系统安全,所以对它们知识点的掌握尤为重要.关于文件权限的表示方法和解析 SUID是Set Us ...

  2. linux特殊权限SUID,SGID和SBIT的介绍

    先来看看两个特殊的文件与目录 [root@ldz ~]# ls -l /usr/bin/passwd -rwsr-xr-x. 1 root root 26968 Jan 29  2010 /usr/b ...

  3. 【Linux】文件特殊权限 SUID/SGID/Sticky Bit

    linux中除了常见的读(r).写(w).执行(x)权限以外,还有3个特殊的权限,分别是setuid.setgid和stick bit 1.setuid.setgid 先看个实例,查看你的/usr/b ...

  4. Linux文件系统上的特殊权限      SUID, SGID, Sticky(粘之位)

    每个人都有自己的梦想,我想把它写出来. Linux文件系统上的特殊权限 SUID, SGID, Sticky(粘之位) 1 文件基本权限 r读, w写, x执行 user, group, other ...

  5. linux下文件属性rwxr,Linux文件的权限[srwxr-xr-x]

    Linux文件的权限[srwxr-xr-x] 发布时间:2018-07-28 09:37, 浏览次数:1288 , 标签: Linux srwxr xr 一.UNIX下关于文件权限的表示方法和解析 U ...

  6. linux 文件隐藏权限,linux文件基本权限、默认权限、隐藏权限和ACL权限

    基本权限 文件属性rwx 每个文件当用ls -l查看时,都会显示文件的详细属性信息,其中在排在首位的共有10位字符信息 例如 -rw-r–rw-. 1 root root --.. 共有10位,第一位 ...

  7. 查看linux文件的权限:ls -l 文件名称

    查看linux文件的权限:ls -l 文件名称 查看linux文件夹的权限:ls -ld 文件夹名称(所在目录) 修改文件及文件夹权限: sudo chmod -(代表类型)×××(所有者)×××(组 ...

  8. Linux文件默认权限和umask笔记

    关于Linux文件默认权限的问题,可以实际先尝试一下如下命令: root用户登录 [root@localhost test]# touch file1 [root@localhost test]# l ...

  9. linux----------今天又遇到一个奇葩的问题,就是linux文件的权限已经是777了但是还是没有写入权限,按照下面的命令就解决了

    linux----------今天又遇到一个奇葩的问题,就是linux文件的权限已经是777了但是还是没有写入权限,按照下面的命令就解决了 参考文章: (1)linux----------今天又遇到一 ...

最新文章

  1. struts2异常ognl.MethodFailedException: Method setId failed for object
  2. 3.将maven项目jar纳入maven仓库,Mave项目依赖另外一个Maven项目的案例
  3. android Animation 动画。淡出动画
  4. iOS界面设计之基础控件的学习 --- UITextField
  5. XAF框架简介-C#语言
  6. 强大的.NET反编译工具Reflector及插件 (转)
  7. originpro 2021 附安装教程
  8. 爬取虾米音乐flac高品质下载
  9. HTML5中weight属性的作用,weight属性
  10. springboot篇】二十一. 基于springboot电商项目 十二 订单服务
  11. 成都拓嘉启远:拼多多推广如何自己添加关键词
  12. 真香,如何关闭微信朋友圈的广告
  13. 127_不同国家的手机号,除去国家代码后,有可能相同吗?
  14. java即时通讯框架_Spring Boot 开发私有即时通信系统(WebSocket)
  15. 外贸企业邮箱域名是什么?企业内部邮箱域名注册解析怎么做?
  16. Linux C语言磁盘U盘容量读取、目录列表读取、文件夹大小读取
  17. 2021年起重机司机(限桥式起重机)免费试题及起重机司机(限桥式起重机)试题及解析
  18. Notepad++ 7.6.4 x64安装包
  19. 奇虎360 2013校园招聘笔试题
  20. 【Go资料】go语言学习资料书籍

热门文章

  1. HTML中元素的position属性详解
  2. /frameworks/support
  3. Perlin Noise
  4. VMware快照的工作原理
  5. 【Android】7.5 RelativeLayout(相对布局)
  6. Recursion and Tail Recursion in Java and Erlang
  7. mediawiki初学心得及使用方法
  8. NSD cisco高级路由与交换技术--2014.8.16
  9. 股票涨跌停的买卖问题
  10. L1-066 猫是液体 (5 分)-PAT 团体程序设计天梯赛 GPLT