我们知道权限有r,w,x。其实除了这三个,还有特殊权限。比如:

[root@localhost ~]# ls -l /usr/bin/passwd

-rwsr-xr-x 1 root root 22960 Jul 17 2006 /usr/bin/passwd

可以发现权限位,有个s。特殊权限有如下3种:SUID、SGID、STICKY

1 SUID

当s出现在文件拥有者的x权限上时,如我们上面看到的/usr/bin/passwd这个文件的权限时-rwsr-xr-x,此时就被称为SET UID简称SUID.SUID对于一个文件有什么限制和功能呢?

  1. SUID权限仅对二进制可执行文件有效

  2. 执行者对于该文件具有x的权限

  3. 本权限仅在执行该文件的过程中有效

  4. 执行者将具有该文件拥有者的权限

例如普通用户用passwd修改自己的命令,实际上最终更改的是/etc/passwd文件. 此文件时用户管理配置文件,只有root权限才能更改。

既然是root用户才拥有此权限,为什么我们可以通过passwd命令来修改密码呢,那这就要归功于passwd设置了suid权限位了。

此时普通用户通过执行passwd命令,临时拥有root权限,间接的修改/etc/passwd,以达到修改自己密码的权限。

2 SGID

当s出现在目录或文件所属群的x权限上时,此时就称为SET GID简称SGID,那SGID对文件和目录分部有哪些功能呢?

2.1 SGID对目录

  1. 使用者若对于此目录具有 r 与 x 的权限时,该使用者能够进入此目录

  2. 使用者在此目录下的群组将会变成该目录的群组

  3. 若使用者在此目录下具有 w 的权限(可以新建文件),则使用者所创建的新文件,该新文件的群组与此目录的群组相同

2.2 SGID对文件

  1. SGID 对二进制可执行文件有效

  2. 程式执行者对于该文件来说,需具备 x 的权限

  3. 执行者在执行的过程中将会获得该文件群组的支援(用于改文件群组的权限)

3 SBIT

当s出现在目录其他用户的x权限上时,此时就称为Sticky Bit简称SBIT,那SBIT有哪些限制和作用呢?

  1. 仅对目录有效,对文件无效

  2. 当使用者在该目录下建立文件或目录时(有权限的情况下),仅自己与 root 才有权力删除新建的目录或文件

我们知道/tmp目录是这样的权限。

现在我们来验证下,先用root账号在tmp文件中创建一个文件test,然后用openstack(其他账号)进入该目录,删除test文件,看看发生什么情况

我们看到这样是不能删除文件的。因为/temp目录有SBIT权限。

4 怎么操作SUID、SBID、SBIT

操作这些标志与操作文件权限的命令是一样的, 都是 chmod. 有两种方法来操作,

(1)符号类型改变权限

  1. chmod u+s testbin-- 为testbin文件加上setuid标志.

  2. chmod g+s testdir-- 为testdir目录加上setgid标志

  3. chmod o+t testdir-- 为testdir目录加上sticky标志

(2) 数字类型改变档案权限

采用八进制方式. 对一般文件通过三组八进制数字来置标志, 如 666, 777, 644等. 如果设置这些特殊标志, 则在这组数字之外外加一组八进制数字. 如 4666, 2777等. 这一组八进制数字三位的意义如下,

abc

  1. a - setuid位, 如果该位为1, 则表示设置setuid 4---

  2. b - setgid位, 如果该位为1, 则表示设置setgid 2---

  3. c - sticky位, 如果该位为1, 则表示设置sticky 1---

设置完这些标志后, 可以用 ls -l 来查看. 如果有这些标志, 则会在原来的执行标志位置上显示. 如

  1. rwsrw-r-- 表示有setuid标志

  2. rwxrwsrw- 表示有setgid标志

  3. rwxrw-rwt 表示有sticky标志

那么原来的执行标志x到哪里去了呢? 系统是这样规定的, 如果本来在该位上有x, 则这些特殊标志显示为小写字母 (s, s, t). 否则, 显示为大写字母 (S, S, T)

最新文章

  1. java.sql.Connection解决插入数据库中文乱码问题
  2. bootstrap中的Tooltips工具提示的使用问题
  3. 解决linux crontab PHP fgetcsv 读取中文数据为空问题
  4. makefile--编码修改-空格出现错误
  5. 2016CCPC 中南地区邀请赛 A 矩阵快速幂
  6. org.jawin.COMException: 8000ffff: Invalid ptr null flag(原址:http://osdir.com/ml/windows.devel.jawin/2006-01/msg00013.html)
  7. python并发编程之协程知识点
  8. C#编程思想(持续更新)
  9. 这个Linux命令是干什么的?
  10. linux xml
  11. window安装mysql教程
  12. sh-copy-id命令报错:-bash: ssh-copy-id: command not found
  13. 如何动态修改windows下的host文件
  14. [Intellij] Intellij IDEA 使用中遇见的问题
  15. 洛谷P2059 卡牌游戏 [JLOI2013] 概率dp
  16. English trip -- Phonics 1 ar
  17. 【322】python控制键盘鼠标:pynput
  18. Win 8下Rime输入法无法同步的临时解决方法
  19. 【最新最全】为 iOS 和 Android 的真机和模拟器编译 Luajit 库
  20. Oracle 表空间、段、区和块简述

热门文章

  1. Struts2实现文件的上传与动态下载功能。
  2. 安装Redis图形监控工具---RedisLive
  3. leetCode 88.Merge Sorted Array (合并排序数组) 解题思路和方法
  4. maven依赖本地非repository中的jar包【转】
  5. 交易准实时预警 kafka topic 主题 异常交易主题 低延迟 event topic alert topic 内存 算法测试
  6. 列举Python常用数据类型并尽量多的写出其中的方法
  7. hadoop2.3安装过程及问题解决
  8. spring 'arroudAspect' for bean class [com.dw.test.ArroudAspect] conflicts with existing, non-compatible bean definition of same name and class [com.dw.aspect.ArroudAspect]
  9. 【字符串题目】poj 3096 Surprising Strings
  10. SpringBoot2.0之整合Dubbo