|NO.Z.00039|——————————|LinuxBasicEnd|——|Linux&权限管理.V05|
一、SetGID
### --- SetGID
### --- 针对文件的作用
~~~ SGID 即可以针对文件生效,也可以针对目录生效,这和 SUID 明显不同。
~~~ 如果针对文件,SGID 的含义如下:
~~~ 只有可执行的二进制程序才能设置 SGID 权限
~~~ 命令执行者要对该程序拥有 x(执行)权限
~~~ 命令执行在执行程序的时候,组身份升级为该程序文件的属组
### --- SetGID 权限同样只在该程序执行过程中有效,也就是说组身份改变只在程序执行过程中有效
[root@localhost ~]# ll /var/lib/mlocate/mlocate.db
-rw-r----- 1 root slocate 1838850 1 月 20 04:29 /var/lib/mlocate/mlocate.db
~~~ 大家发现属主权限是 r、w,属组权限是 r,但是其他人权限是 0:
~~~ 当普通用户 user1 执行 locate 命令时,会发生如下事情:
~~~ /usr/bin/locate 是可执行二进制程序,可以赋予 SGID
~~~ 执行用户 user1 对/usr/bin/locate 命令拥有执行权限
~~~ 执 行 /usr/bin/locate 命 令 时 , 组 身 份 会 升 级 为 slocate 组 ,
~~~ 而 slocate 组 对/var/lib/mlocate/mlocate.db 数据库拥有 r 权限,
~~~ 所以普通用户可以使用 locate 命令查询mlocate.db 数据库
~~~ 命令结束,user1 用户的组身份返回为 user1 组
[root@localhost ~]# ll /usr/bin/locate
-rwx--s--x 1 root slocate 35612 8 月 24 2010 /usr/bin/locate
### --- 针对目录的作用
~~~ 如果 SGID 针对目录设置,含义如下:
~~~ 普通用户必须对此目录拥有 r 和 x 权限,才能进入此目录
~~~ 普通用户在此目录中的有效组会变成此目录的属组
~~~ 若普通用户对此目录拥有 w 权限时,新建的文件的默认属组是这个目录的属组
~~~ 这样写的实在太难看明白了,举个例子:
~~~ 进入临时目录做此实验。因为临时目录才允许普通用户修改
[root@localhost ~]# cd /tmp/
~~~ 建立测试目录
[root@localhost tmp]# mkdir dtest
~~~ 给测试目录赋予 SGID
[root@localhost tmp]# chmod g+s dtest
~~~ SGID 已经生效
[root@localhost tmp]# ll -d dtest/
drwxr-sr-x 2 root root 4096 1 月 20 06:04 dtest/
~~~ 给测试目录权限,让普通用户可以写
[root@localhost tmp]# chmod 777 dtest/
~~~ 切换成普通用户 user1
[root@localhost tmp]# su – user1
~~~ 普通用户进入测试目录
[user1@localhost ~]$ cd /tmp/dtest/
~~~ 普通用户建立 abc 文件
[user1@localhost dtest]$ touch abc
~~~ abc 文件的默认属组不再是 user1 用户组,而变成了 dtest 组的属组 root
[user1@localhost dtest]$ ll
-rw-rw-r-- 1 user1 root 0 1 月
20 06:07 abc
二、SetGID:实验专题
### --- 针对文件的作用
[root@server11 ~]# locate httpd.conf
[root@server11 ~]# ll /usr/bin/locate // locate所属组是s权限的
-rwx--s--x. 1 root slocate 40520 Apr 11 2018 /usr/bin/locate
[yanqi@server11 ~]$ mkdir yanqi
[yanqi@server11 ~]$ cd yanqi/
[yanqi@server11 yanqi]$ touch yanqi1
[root@server11 ~]# chmod g+s /home/yanqi/yanqi/
[root@server11 ~]# ll -d /home/yanqi/yanqi/
drwxrwsr-x 2 yanqi yanqi 34 Mar 12 00:46 /home/yanqi/yanqi/
[yanqi@server11 yanqi]$ ll
-rw-rw-r-- 1 yanqi yanqi 0 Mar 12 00:44 yanqi1
-rw-rw-r-- 1 yanqi root 0 Mar 12 00:47 yanqi2 // 所属组为root组
一、文件特殊权限之 Sticky BIT
### --- 文件特殊权限之 Sticky BIT
~~~ Sticky BIT 粘着位,也简称为 SBIT。SBIT 目前仅针对目录有效,
~~~ 它的作用如下:粘着位目前只对目录有效
~~~ 普通用户对该目录拥有 w 和 x 权限,即普通用户可以在此目录拥有写入权限
~~~ 如果没有粘着位,因为普通用户拥有 w 权限,所以可以删除此目录下所有文件,
~~~ 包括其他用户建立的文件。一但赋予了粘着位,除了 root 可以删除所有文件,
~~~ 普通用户就算拥有 w 权限,也只能删除自己建立的文件,但是不能删除其他用户建立的文件。
### --- 设定文件特殊权限
### --- 特殊权限这样来表示:
~~~ 4 代表 SUID
~~~ 2 代表 SGID
~~~ 1 代表 SBIT
~~~ 赋予 SUID 权限
[root@localhost ~]# chmod 4755 ftest
~~~ 赋予 SGID 权限
[root@localhost ~]# chmod 2755 ftest
~~~ SBIT 只对目录有效,所以建立测试目录,并赋予 SBIT
[root@localhost ~]# mkdir dtest
[root@localhost ~]# chmod 1755 dtest/
二、文件特殊权限之 Sticky BIT:实验专题
### --- tmp本身是有SBIT权限
~~~ 权限想要起作用,需要给目录授予777权限
[root@server11 ~]# ll -d /tmp/
drwxrwxrwt. 10 root root 285 Mar 12 00:50 /tmp/
[root@server11 ~]# touch /tmp/yanqi1
[yanqi@server11 ~]$ touch /tmp/yanqi2
[root@server11 ~]# ll /tmp/
total 0
-rw-r--r-- 1 root root 0 Mar 12 00:51 yanqi1
-rw-rw-r-- 1 yanqi yanqi 0 Mar 12 00:51 yanqi2
[yanqi@server11 ~]$ rm -rf /tmp/yanqi1 // root的文件是不可以删除的
rm: cannot remove ‘/tmp/yanqi1’: Operation not permitted
Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of life.It sinks, and I am ready to depart
——W.S.Landor
分类:
cdv005-basic
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」