Linux特殊位SUID、SGID、SBIT

前言

Linux中的文件权限一般有x、w、r,在某个情况下有需要用到s、t,即特殊位。

进程运行时能够访问哪些资源或文件,不取决于进程文件的属主属组,而是取决于运行该命令的用户身份的uid/gid,以该身份获取各种系统资源。

SUID

SUID即setuid,作用就是让执行该命令的用户,以该命令的拥有者的权限去执行,比如普通用户执行passwd时会拥有root的权限;

例子:

[syz@m01 ~]$ ll /usr/bin/passwd
-rwsr-xr-x. 1 root root 30768 Feb 22 2012 /usr/bin/passwd

说明:该文件/usr/bin/passwd的属主权限带有s;且属主和属组都是root,如果syz该用户是怎么进行密码更改的呢?首先这个文件带有的s;即是setuid权限位,表示允许普通用户

以/usr/bin/passwd属主root的权限来执行普通用户无法执行的功能。

设置和取消SUID

设置:

chmod 4xxx 文件名 例如:chmod 4551 syz.txt

chmod u+s 文件名            chmod u+s syz.txt

取消

chmod xxx 文件名

chmod u-s 文件名

SGID

SGID即setgid,作用就是即让执行文件的用户以该文件所属组的权限去执行。

设置和取消SGID

设置:

chmod 2xxx 文件名 例如:chmod 2551 syz.txt

chmod g+s 文件名            chmod g+s syz.txt

取消

chmod xxx 文件名

chmod g-s 文件名

SBIT

SBIT即Stick Bit,粘滞位,作用就是只对目录有效,普通用户对该目录有w和x权限,若没有粘滞位,则普通用户可以对目录下的文件/子目录进行删除操作(因为普通用户对目录具有w权限),包括其它用户建立的目录/文件;但若赋了SBIT,则普通用户只能删除自己创建的文件/目录,而不能删除不属于自己的文件/目录!

设置和取消SBIT

设置:

chmod 1xxx 文件名 例如:chmod 1551 syz.txt

chmod o+s 文件名            chmod o+s syz.txt

取消

chmod xxx 文件名

chmod o-s 文件名

例子:

[syz@m01 ~]$ ll -d /tmp/
drwxrwxrwt. 3 root root 4096 Feb 18 22:16 /tmp/

/tmp目录的权限other部分为rwt,这个t就是我们设置的粘滞位

#首先在syz用户下创建两个文件

[syz@m01 tmp]$ ll
total 4
drwxrwxr-x 2 syz syz 4096 Feb 18 23:14 test-dir
-rw-rw-r-- 1 syz syz 0 Feb 18 23:14 test-file

#然后切换到在leo用户下删除这两个文件

[leo@m01 tmp]$ ll
total 4
drwxrwxr-x 2 syz syz 4096 Feb 18 23:14 test-dir
-rw-rw-r-- 1 syz syz 0 Feb 18 23:14 test-file

[leo@m01 tmp]$ rm -rf test-dir/ test-file
rm: 无法删除"test-dir/": 不允许的操作

#显示无法删除,然后切换到root下,去除/tmp/的的t,即粘滞位

[leo@m01 tmp]$ su -
Password:
[root@m01 ~]# chmod o-t /tmp/
[root@m01 ~]# ll -d /tmp
drwxrwxrwx. 4 root root 4096 Feb 18 23:14 /tmp

#然后切换到leo用户,即可删除syz用户创建的那两个文件

[leo@m01 tmp]$ rm -rf test-dir/ test-file
[leo@m01 tmp]$ ll /tmp/
总用量 0

最新文章

  1. mysql主备(centos6.4)
  2. c# 局域网文件传输实例
  3. 关于C#的委托(delegate)的自我理解
  4. git config命令使用
  5. JAVA手记 JAVA入门(安装+Dos下运行)
  6. NYOJ题目77开灯问题
  7. HTML5 UI框架Kendo UI Web自定义组件(一)
  8. hdinfo
  9. SQL Server 2008 表值参数用法
  10. unity游戏设计之背包系统
  11. 转:JAVA里面的int类型 和Integer类型,有什么不一样
  12. 转:java 可设置最大内存
  13. git 简单入门
  14. dubbo安装
  15. Spark:相关错误总结
  16. bzoj 4556 字符串
  17. python3 树莓派 + usb摄像头 做颜色识别 二维码识别
  18. 移动web图片加载完获取img宽高
  19. [转]RPA简介
  20. python目录遍历文件名称替换

热门文章

  1. 慎用margin系列3---IE6下3px bug
  2. 转 Jmeter参数化--Post请求的Post body 参数化
  3. vim以超级用户权限保存文件
  4. 【题解】Tom的烦恼
  5. __attribute__((regparm(3))) from GNU C
  6. USACO Wifi Setup /// 贪心
  7. 解决码云未配置公钥问题——fatal: Could not read from remote repository.
  8. Shell 变量操作
  9. aarch64 架构 交叉编译 tcpdump
  10. 忘记mysql超户密码的解决方法