Linux特殊权限之suid、sgid、sbit权限
文件权限管理之特殊命令
一:特殊权限
昨天所学的Linux基本权限为为9个;分别是rwx rwx rwx。但有时会发现系统中会有一些特殊的权限位符号;
例如:

Linux系统一共有12个特殊权限符:
| rwx | rwx | rwx | suid | guid | sbit |
|---|---|---|---|---|---|
| 属主 | 属组 | 其他人 | 用户位 | 用户组 | 其他用户 |
特殊权限对照表:
| 类别 | suid | guid | sbit |
|---|---|---|---|
| 字符表示 | S(大写) | S(大写) | T(大写) |
| 出现位置 | 用户权限为x | 用户权限位x | 其他用户权限位 |
| 基本权限为有x权限 | s(小写) | s(小写) | t(小写) |
| 代表数字 | 4 | 2 | 1 |
| 八进制表示 | 4000 | 2000 | 1000 |
| 生效对象 | 用户位 | 用户组位 | 其它用户 |
二:特殊权限命令
1.suid基础原理:
1.suid通过S字符标识,存在于用户权限位的x对应权限位置
2.若某文件本身的用户权限位就有x权限,则设置suid权限时,则会以s(小写)表示
3.给文件设置s权限对应的数字表示为4;在八进制数下可以用4000表示
4.suid同样也可以使用chmod命令设置权限,可以使用字符或数字表示
注意:
suid仅适用于可执行的文件
功能:只要用户对设有uid的文件有执行权限,那么当用户执行此文件时,就会以该文件属主的用户身份去执行此文件;当执行文件后,身份的切换也会随之消失
例:当用户执行passwd时;执行的是/usr/bin/passwd这个可执行文件;执行时会以root用户身份执行,可以在执行时修改一连串的文件(连锁反应),当该passwd二进制文件执行后,用户身份也就会变为本身了
设想;当/usr/bin/passwd二进制可执行文件没有了s权限,会发生怎样的情况
(当普通用户使用passwd命令时,会修改一系列的相关文件{/etc/passwd,shadow文件};而这些文件的属主组都不是属于普通用户,所以就会有suid权限;当普通用户使用该二进制命令文件时,就会使用该文件的属主身份进行操作。)
当删除掉passwd文件的s执行权限:

查看普通用户是否可以执行该二进制文件

这就表示虽然普通用户有权限使用passwd;但无法向该文件连锁执行的文件做出修改,就会提示用户身份令牌错误;普通用户就不能自己修改自己的密码了。
恢复/usr/bin/passwd二进制文件的suid权限

使用普通用户使用passw修改自己的密码;看看是否成功

以上述为例:如何让用户本身禁止修改密码??
可以修改/usr/bin/passwd文件的s权限,去掉该权限;让普通用户虽然可以执行passwd;但是无法修改与passwd命令相关变动的/etc/shadow用户密码文件;这样就可以让用户不能修改密码了
使用find命令搜索系统上所有的s权限位文件

参数解释:
-perm:利用权限进制搜索
-type:指定文件类型(l:软连接类型;d:文件夹类型;f:文件类型)
-ls:搜索的数据进行格式化输出
-delete:对匹配的数据进行删除
总结:
当有suid权限的文件被执行时,该文件将以所有者的身份去运行,就相当于普通用户执行这个文件时,就会拥有该文件属主的权限了;若属主为root,那么执行者就会在执行文件时拥有root用户的权限!!
1.suid权限是针对二进制可执行文件设置的,不能用在shell脚本上(非常危险!!)
2.suid权限位在user位的x权限位上,当设置该文件有s权限后;若显示为S,则说明x权限位本身就没有x权限;若显示s(小写),则说明该文件权限位本身就有x权限
3.suid的作用就是让执行者拥有文件属主的全部权限;以文件所有者的身份去运行该文件
4.suid权限会对系统有一定的危险!一般使用sudo命令代替suid权限执行相应的操作;当对Linux系统优化时,会尽量去除所有设置的suid命令
2.sgid 权限位
对于二进制文件命令说,sgid与suid的作用、使用方法大致相同;不同的是suid是设置文件属主的权限;sgid是设置文件属组的权限
suid主要作用于二进制文件;sgid主要作用于文件夹:当为某个文件夹设置sgid权限后,在改文件夹中创建的文件,都会以改文件夹的属组权限为准,而不属于创建该文件的用户权限。
sgid对于文件、文件夹有不同的作用:
文件:
- sgid只对二进制文件命令生效,且需改文件本身具有x权限
- 当执行具有sgid权限的二进制文件命令时,就会获得该命令在执行期间所属组的身份与权限(就相当于执行具有suid权限的文件一样)
文件夹:
- 当设置了sgid权限的文件夹,会保证在该文件夹下创建的所有文件或文件夹都会保持同样的属组权限属性(就相当于创建的文件或目录都会保持与上一级目录相同的属组)
实践操作:
1.创建一个共享目录/home/admins

2.要求该目录属组是adminuser,adminuser组内成员对该目录的权限是,可读,可写,可执行

3.其他用户均无任何权限(root特例)

4.进入/home/admins创建的文件,自动继承adminuser组的权限。


(如何在创建文件或目录时,保持与上一级文件具有相同的属组权限)
使用普通用户在该文件夹下创建文件或文件夹:
恢复文件夹的其它用户权限

创建文件与文件夹

3.sbit 粘滞位
在o的权限为上

sbit特殊点:
当一个目录有了粘滞位,这个目录除了root用户外,任何用户都只能删除、移动自己创建的文件或目录不会影响到其他用户文件或目录
若文件夹没有设置粘滞位,并且文件夹权限的rwx权限很大;任何具有该目录写和执行权限的用户都可以删除和移动体重的任何文件!!
拓展
1.查看系统所有的环境变量
set命令
2.查看用户的环境变量
env命令
3.命令提示符的变量
PS1
4.若用户的家目录出现损坏,咋办?
- 直接拷贝/etc/skel文件中的所有文件到该用户的家目录

-r:递归拷贝
Linux特殊权限之suid、sgid、sbit权限的更多相关文章
- Linux之特殊权限(SUID/SGID/SBIT)
特殊权限的介绍 Set UID 当s这个标志出现在文件所有者的x权限上时,如/usr/bin/passwd这个文件的权限状态:“-rwsr-xr-x.”,此时就被称为Set UID,简称为SUID.那 ...
- 文件的特殊权限(SUID,SGID,SBIT)
文件的一般权限:r w x 对应 421 文件的特殊权限:SUID SGID SBIT对应 421 文件的隐藏权限:chattr设置隐藏权限,lsattr查看文件的隐藏权限. 文件访问控制列表: ...
- Linux文件与目录的默认权限与隐藏权限 - umask, chattr, lsattr, SUID, SGID, SBIT, file
文件默认权限:umask [root@www ~]# umask 0022 <==与一般权限有关的是后面三个数字! [root@www ~]# umask -S u=rwx,g=rx,o=rx ...
- CentOS 文件特殊权限SUID,SGID,SBIT
1.SUID ,是一种对二进制程序进行设置的特殊权限,可以让二进制程序的执行者临时拥有所有者的权限(仅对拥有执行权限的二进制程序有效). (1)SUID权限仅对二进制程序有效: (2)本权限仅在执行该 ...
- SUID, SGID, SBIT
基本上SUID有这样的限制与功能: SUID权限仅对二进位程序(binaryprogram)有效,不能用在shellscript上面: 运行者对於该程序需要具有x的可运行权限: 本权限仅在运行该程序的 ...
- Linux 文件特殊权限 SUID SGID SBIT
文件除了常规的权限r, w, x 还有一些特殊的权限,s与t权限,具体的用处如下 1 SetUID 当s 这个标志出现在文件所有者的x权限上时, 例如/usr/bin/passwd, [root@or ...
- centos 特殊权限 各种搜索命令 lsattr ,chattr,suid,sgid,sbit,file,type是否是内置命令,stat文件属性 ,whereis,locate,find,ln 内部命令和外部命令 第五节课
centos 特殊权限 各种搜索命令 lsattr ,chattr,suid,sgid,sbit,file,type是否是内置命令,stat文件属性 ,whereis,locate,find,ln ...
- suid sgid sbit chattr lsattr
suid 一般用于二进制可执行文件,suid代表当用户执行此二进制文件时,暂时具有此文件所有者的权限 chmod 4xxx binfile sgid 一般用于目录,sgid代表当其他用户在此目录下创建 ...
- suid sgid sbit chattr lsattr find
suid 一般用于二进制可执行文件不可用于shell脚本和目录,suid代表当用户执行此二进制文件时,暂时具有此文件所有者的权限 chmod 4xxx binfile sgid 一般用于目录,sgid ...
- Linux 特殊权限 SUID,SGID,SBIT
setuid 和 setgid 分别是 set uid ID upon execution 和 set group ID upon execution 的缩写.我们一般会再次把它们缩写为 suid 和 ...
随机推荐
- ssh中“Host key verification failed.“的解决方案
SSH连接的时候Host key verification failed. ➜ ~ ssh root@192.168.1.88 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ...
- 【收藏】Supervisor的作用与配置
原文链接:https://www.jianshu.com/p/0226b7c59ae2 supervisor supervisor管理进程,是通过fork/exec的方式将这些被管理的进程当作supe ...
- IOS开发之----常用函数和常数--秀清
介绍一下Objective-c常用的函数,常数变量 算术函数 [算术函数] 函数名 说明 int rand() 随机数生成.(例)srand(time(nil)); //随机数初期化int val = ...
- socket 套接字编程
今日内容 socket 套接字编程 简易服务端与客户端代码实现 通信循环 黏包现象(TCP协议) 报头制作.struct 模块.封装形式 内容详细 一.socket 套接字编程 实现一款能够进行数据交 ...
- TCP/IP详解 读书笔记(一):概述
分层 网络协议通常分不同层次进行开发,每一层负责不同的职责,一个协议簇指的是一组不同层次上的多个协议的组合. TCP/IP通常被认为是一个四层协议系统: 链路层:主要是处理与电缆或其他传输媒介的物理接 ...
- WebKit Inside: DOM树的构建
当客户端App主进程创建WKWebView对象时,会创建另外两个子进程:渲染进程与网络进程.主进程WKWebView发起请求时,先将请求转发给渲染进程,渲染进程再转发给网络进程,网络进程请求服务器.如 ...
- vue的编译作用域
其实就是在哪个实例中使用vue指令,他所在的作用域就在那个实例中 例如 当组件标签使用vue指令的时候,他所在的作用域就是vue实例对象的作用域,而当组件的 template中 标签使用vue指令的话 ...
- 关于Linux操作系统的命令行文件拷贝
关于Linux操作系统的命令行文件拷贝 起因:服务器的加密狗秘钥过期导致无法使用服务,需要将服务器里面的秘钥文件发送给授权人员.本以为十分容易,打开服务器,图形界面点击发送即可.没想到服务器的界面是命 ...
- 【计理01组04号】JDK基础入门
java.lang包 java.lang包装类 我们都知道 java 是一门面向对象的语言,类将方法和属性封装起来,这样就可以创建和处理相同方法和属性的对象了.但是 java 中的基本数据类型却不是面 ...
- for循环例子2
代码 点击查看[ForTest2.java]代码 //package com.d; import java.util.Scanner; /** * for循环例子2 * @date: 2022.2.2 ...