文件特殊权限(SUID,SGID,Sticky)

news/2025/2/14 3:49:23/

三种特殊权限:SUID,SGID,Sticky

SUID

安全上下文,何为安全上下文

安全上下是一个访问控制属性,是selinux中的重要组成部分,在进行移动时,不会改变文件的属性和权限,而复制的过程会改变文件的属性,而安全上下文是一个访问的凭证,特定的文件被特定的程序访问,安全上下文会关闭系统认为不安全的功能,当安全上下文相匹配时才允许访问。

前提:进程有属主和属组;文件有属主和属组

  1. 任何一个可执行程序文件能不能启动为进程,取决发起者对程序文件是否拥有执行权限
  2. 启动为进程之后,其进程的属主为发起者,进程的属组为发起者所属的组
  3. 进程访问文件时的权限,取决于进程的发起者
  • 进程的发起者,同文件的属主:则应用文件属主权限
  • 进程的发起者,属于文件属组;则应用文件属组权限
  • 应用文件“其它”权限

二进制的可执行文件上SUID权限功能:

任何一个可执行程序文件能不能启动为进程:取决发起者对程序文件是否拥有执行权限

启动为进程之后,其进程的属主为原程序文件的属主

SUID只对二进制可执行程序有效

SUID设置在目录上无意义

SUID权限设定:

chmod u+s FILE... 
chmod 6xxx FILE 
chmod u-s FILE...

范例:

[root@centos7 ~]# ll `which passwd`
-rwsr-xr-x. 1 root root 27856 Apr  1  2020 /usr/bin/passwd
[root@centos7 ~]# ll `which cat`
-rwxr-xr-x. 1 root root 54080 Aug 20  2019 /usr/bin/cat

实验:

#查看vim原权限
[root@centos7 ~]# ll `which vim`
-rwxr-xr-x. 1 root root 2337208 Dec 16  2020 /usr/bin/vim
#赋予suid权限 
[root@centos7 ~]# chmod u+s `which vim`
[root@centos7 ~]# ll `which vim`
-rwsr-xr-x. 1 root root 2337208 Dec 16  2020 /usr/bin/vim#切换普通用户
[root@centos7 ~]# su - song
Last login: Tue Sep  6 10:56:17 CST 2022 on pts/0
[song@centos7 ~]$ vim /etc/passwd
......
song:x:1000:1000:song is superboy:/home/song:/bin/bash   #修改内容song is superboy
......
#修改后,然后wq!强制保存,可以实现

SGID

二进制的可执行文件上SGID权限功能:

任何一个可执行程序文件能不能启动为进程:取决发起者对程序文件是否拥有执行权限

启动为进程之后,其进程的属组为原程序文件的属组

目录上的SGID权限功能

默认情况下,用户创建文件时,其属组为此用户所属的主组,一旦某目录被设定了SGID,则对此目录有

写权限的用户在此目录中创建的文件所属的组为此目录的属组,通常用于创建一个协作目录

SGID权限设定:

chmod g+s FILE... 
chmod 2xxx FILE 
chmod g-s FILE...

实验:

#root下创建一个目录/test ,赋予权限2777,属组设置为song1
[root@centos7 ~]# mkdir /test
[root@centos7 ~]# ll -d /test/
drwxr-xr-x 2 root root 6 Sep  6 11:20 /test/
[root@centos7 ~]# chmod 2777 /test/
[root@centos7 ~]# chown root:song1 /test/
[root@centos7 ~]# ll -d /test/
drwxrwsrwx 4 root song1 86 Sep  6 11:28 /test/
[root@centos7 ~]# su - song
Last login: Tue Sep  6 11:16:52 CST 2022 on pts/0
[song@centos7 ~]$ touch /test/aa1
[song@centos7 ~]$ mkdir /test/aa2
[song@centos7 ~]$ ll /test/
total 0
-rw-rw-r-- 1 song song1 0 Sep  6 11:29 aa1
drwxrwsr-x 2 song song1 6 Sep  6 11:29 aa2[song@centos7 ~]$ 结果显示,song在/test目录下创建的文件和目录都自动继承了song1的属组
而且新目录的权限也继承了SGID.
所以设定了SGID的目录中的所有新建文件和目录都会自动属于song1组.

STICKY

具有写权限的目录通常用户可以删除该目录中的任何文件,无论该文件的权限或拥有权

在目录设置Sticky 位,只有文件的所有者或root可以删除该文件

通俗来讲就是

  • 对于一个多人可写的目录,如果设置了sticky,则每个用户仅能删除和改名自己的文件或目录;

  • 只能作用在目录上.普通文件设置无意义,且会被linux内核忽略

  • 用户在设置Sticky权限的目录下新建的目录不会自动继承Sticky权限

Sticky权限设定:

chmod o+t DIR... 
chmod 1xxx DIR 
chmod o-t DIR...

范例:

# ll -d /tmp/
drwxrwxrwt. 9 root root 161 Sep  6 10:39 /tmp/

实验:

#创建一个目录
[root@centos7 ~]# mkdir -p  /test/mkfile
[root@centos7 ~]# ll -d /test/mkfile/
drwxr-xr-x 2 root root 6 Sep  6 14:45 /test/mkfile/
[root@centos7 ~]# chmod 777 /test/mkfile
[root@centos7 ~]# ll -d /test/mkfile/
drwxrwxrwx 2 root root 6 Sep  6 14:45 /test/mkfile/
#分别切换用户song和song1在里边新建文件
[root@centos7 ~]# su - song
Last login: Tue Sep  6 11:29:32 CST 2022 on pts/0
[song@centos7 ~]$ touch /test/mkfile/aa1
[song@centos7 ~]$ mkdir /test/mkfile/mkfile1
[song@centos7 ~]$ ll /test/mkfile/
total 0
-rw-rw-r-- 1 song song 0 Sep  6 14:48 aa1
drwxrwxr-x 2 song song 6 Sep  6 14:48 mkfile1[song@centos7 ~]$ su - song1
Password: 
Last login: Tue Sep  6 11:17:14 CST 2022 on pts/0
[song1@centos7 ~]$ touch /test/mkfile/aa2
[song1@centos7 ~]$ mkdir /test/mkfile/mkfile2
[song1@centos7 ~]$ ll /test/mkfile/
total 0
-rw-rw-r-- 1 song  song  0 Sep  6 14:48 aa1
-rw-rw-r-- 1 song1 song1 0 Sep  6 14:49 aa2
drwxrwxr-x 2 song  song  6 Sep  6 14:48 mkfile1
drwxrwxr-x 2 song1 song1 6 Sep  6 14:49 mkfile2#这时song和song1可以删除自己建立和别人建立的文件#这时给/test/mkfile目录设置一个sticky位
[root@centos7 ~]# chmod +t /test/mkfile/
[root@centos7 ~]# ll -d /test/mkfile/
drwxrwxrwt 4 root root 58 Sep  6 14:51 /test/mkfile/#这时切换到song用户中,只能对自己建立的文件操作,其他则无法操作
[song@centos7 ~]$ ll /test/mkfile/
total 0
-rw-rw-r-- 1 song  song  0 Sep  6 14:48 aa1
-rw-rw-r-- 1 song1 song1 0 Sep  6 14:49 aa2
drwxrwxr-x 2 song  song  6 Sep  6 14:48 mkfile1
drwxrwxr-x 2 song1 song1 6 Sep  6 14:49 mkfile2
[song@centos7 ~]$ mv /test/mkfile/aa2 /tmp/
mv: cannot move ‘/test/mkfile/aa2’ to ‘/tmp/aa2’: Operation not permitted
[song@centos7 ~]$ rm -rf /test/mkfile/aa2 
rm: cannot remove ‘/test/mkfile/aa2’: Operation not permitted
[song@centos7 ~]$ rm -rf /test/mkfile/aa1 
[song@centos7 ~]$ rm -rf /test/mkfile/mkfile2/
rm: cannot remove ‘/test/mkfile/mkfile2/’: Operation not permitted#sticky生效了

权限位映射

SUID: user,占据属主的执行权限位

s:属主拥有x权限S:属主没有x权限

SGID: group,占据属组的执行权限位

s: group拥有x权限S:group没有x权限

Sticky: other,占据other的执行权限位

t:other拥有x权限T:other没有x权限

总结:

二进制文件目录
SUID此用户将继承此程序的所有者权限无意义
SGID此用户将继承此程序的所属组权限此目录下所有用户新建文件都自动继承此目录的用户组
Sticky无意义目录中每个用户仅能删除、移动或改名自己的文件或目录

http://www.ppmy.cn/news/491704.html

相关文章

单元6:Linux系统中的权限管理

一、权限查看及读取 1、权限查看 | 命令功能ls -l file查看文件权限ls -ld dir查看目录权限 2、权限的读取 文件的属性被叫做文件的元数据(meta data) 一种元数据用1个byte来记录内容 文件权限信息: “- | rw-r–r-- | . | 1 | root | root | 0 | Apr 12 10:…

工作了一辈子,你的住房公积金一共能有多少钱?

工作了快二十年了,02年大学毕业,进的私企两年后才开始有公积金账户,从140元每个月开始缴纳。到了现在这个单位才基本趋于正常,每月也就总共缴纳1858元。现在总额才15万多一点。假设我再工作二十年才退休,按照现在的扣款…

公积金提取一次需要间隔多长时间

住房公积金提取一次需要间隔的时间,得看提取的类型是什么: 1.购房并使用房贷:每个月可以提取一次住房公积金,累计提取总额不能超过实际发生的住房支出。 2.购房一次性付款:职工及其配偶每季度可以全额提取一次住房公…

事业单位工资计算机公积金计算,事业单位住房公积金基数怎么算?

阅读本文前,请您先点击上面的蓝色字体“人事聊”,再点击“关注”,这样您就可以继续免费收到最新文章了。每天都有分享。完全是免费订阅,请放心关注 事业单位住房公积金基数都是按职工的月工资来进行计算;对于公积金的计…

广州如何下载公积金的缴交证明和个人信息表

广州如何下载公积金的缴交证明和个人信息表 广州如何下载公积金的缴交证明和个人信息表 广州如何下载公积金的缴交证明和个人信息表 打开广州住房公积金管理中心(http://gjj.gz.gov.cn/) 在菜单中找到网上办事 在后面的菜单中,点击个人缴交…

公积金的提取规则

平常咱们工作中单位都缴纳一部分的的住房公积金,也有一些已经工作了一定年限的朋友,自己的公积金账户里少则也有上万元,多则可能都有十几万元,那么怎么才能把公积金提取出来呢 公积金官网:http://www.shgjj.com/ 第一&…

住房公积金提取

办理住房公积金提取:需提供 a.本人身份证复印件; b. 购房合同复印件; c.购房发票复印件和契税发票复印件 d. 银行卡复印件; e.房主为配偶的还需提供结婚证复印件和配偶方公积金支取记录单

深圳市住房公积金提取办法

本办法适用于深圳市行政区域内住房公积金的提取管理。 名词解释: 家庭成员:包括职工配偶及其未成年子女 当月缴存额:职工个人月缴存额 公司当月给员工的缴存额(例如,个人当前每个月缴存500,公司给同等缴…