Brc's blog
首页
前端
后端
运维
  • 工作笔记
  • 分类
  • 标签
  • 归档
关于

Brc

努力中
首页
前端
后端
运维
  • 工作笔记
  • 分类
  • 标签
  • 归档
关于
  • Linux基础

    • Bash shell
    • 文件属性
    • 编辑工具vim
    • 用户管理
    • 用户组管理
    • 普通用户提权
    • 基础权限
    • 特殊权限
      • 特殊权限SUID
        • SUID产生背景
        • SUID配置语法
        • SUID作用总结
      • 特殊权限SGID
        • 什么是SGID
        • SGID配置语法
        • SGID场景说明
      • 特殊权限SBIT
        • 什么是SBIT
        • SBIT配置示例
        • SBIT使用场景
        • SBIT作用总结
    • 文件特殊属性
    • IO重定向
    • 文件查找
    • 文件压缩
    • 软件包管理

    • 磁盘管理

    • 进程管理
    • 计划任务
    • systemd
    • Supervisor
    • 网络管理

    • Chrony时间同步
    • NFS网络文件系统
  • Linux进阶

  • 其他

  • 运维
  • Linux基础
Brc
2021-07-05
目录

特殊权限

  • 我们知道r、w、x这三种权限,但在查询系统文件时会发现有一些其他权限的字母;
    • 比如:/usr/bin/passwd文件,属主应该是×的权限位出现了s;
    • 比如:/usr/bin/locate文件,属组应该是×的权限位出现了s;
    • 比如:/tmp目录,其他人应该是×的权限位出现了t;
  • 我们把这种称为特殊权限,那么特殊权限有什么作用呢?或者说能干啥?

# 特殊权限SUID

# SUID产生背景

在Linux系统中,每个普通用户都可以更改自己的密码,这是合理的设置;但是用户的密码信息存储在/etc/shadow文件中,也就是说,普通用户在更改自己密码时会更新/etc/shadow文件的内容。

但/etc/shadow文件不允许任何人修改,那为什么普通用户可以修改自己的权限呢?

[root@web ~]# ll /etc/shadow
---------- 1 root root 11409 Apr 13 03:26 /etc/shadow
1
2

其实,普通用户可以修改自己的密码在于passwd命令本身,该命令拥有特殊权限SetUID也就是在属主的权限位的执行权限上是s。那如何理解特殊权限SetUID:当一个执行文件设置SetUID后,用户在执行这个文件时将以文件所有者的身份来执行。

image-20210705224647783

  • 当我们使用普通用户bi执行passwd命令会发生什么变化呢?
    • 由于passwd命令拥有suid特殊权限;(在命令属主权限位有一个s)
    • 所以passwd命令在执行的过程中,会以命令的属主身份运行该命令;(也是root身 份)
    • 总结:bi-->passwd-->转换为命令属主身份root执行-->操作/etc/shadow信息变更;

# SUID配置语法

[root@web ~]# chmod u+s /usr/bin/cat
[root@web ~]# chmod 4755 /usr/bin/cat
1
2

# SUID作用总结

  • 让普通用户对可执行的二进制文件,临时拥有二进制文件的所属主权限;
  • 如果设置的二进制文件没有执行权限,那么suid的权限显示就是大S;
  • 特殊权限suid仅对二进制可执行程序有效,其他文件或目录则无效;
  • 注意:suid相对危险,不建议对vim或rm进行suid设定操作;

# 特殊权限SGID

# 什么是SGID

  • SGID:
    • 设置二进制可执行文件,命令在执行的过程中,会以命令的属组身份运行该命令
    • 设置在目录上,这时候在该目录下新建的文件/目录自动继承父目录的属组

# SGID配置语法

[root@web ~]# chmod g+s /dir
[root@web ~]# chmod 2755 /dir
1
2

# SGID场景说明

  • 需求描述

    • 系统有两个用户,分别为ex1与ex2,这两个用户都拥有example附加组;
    • 这两个用户需要共同拥有/data/code目录的开发权;
    • 互相之间能修改彼此的文件,且该目录不允许其他人进入查阅;
    [root@web ~]# groupadd example
    [root@web ~]# useradd ex1 -G example
    [root@web ~]# useradd ex2 -G example
    [root@web ~]# mkdir /data/code
    [root@web ~]# chgrp example /data/code/
    [root@web ~]# chmod 770 /data/code/
    [root@web ~]# chmod 2770 /data/code/
    
    1
    2
    3
    4
    5
    6
    7

# 特殊权限SBIT

# 什么是SBIT

一旦目录被赋予了粘滞位Sticky(SI TI KI)除了root可以删除目录中的所有文件,普通用户对该目录就算拥有w权限,也只能删除自己建立的文件,而不能删除其他用户建立的文件。

# SBIT配置示例

需求︰默认情况下/mnt不是粘滞位,如何将此目录设置为粘滞位;

[root@web ~]# chmod 1755/tmp
[root@web ~]# chmod o+t /tmp
1
2

# SBIT使用场景

后期当我们要初始化MySQL服务时,服务会创建一些临时文件存储至/tmp目录下,当初始化完毕后,自己会清理掉里面的数据,别人无法清理。(如果这个目录不是粘滞位,那么初始化MySQL就会报错)

  • 编写Shell脚本模拟此场景

    • 模拟MySQL初始化创建文件至/tmp目录;
    • 然后登陆普通用户删除MySQL的初始化文件;
    • 如果普通用户删除成功,则初始化失败(因为MySQL服务创建的文件,需要自行销毁);
    • 如果普通用户删除失败,则MySQL服务尝试删除,删除成功,则初始化成功;
  • Shell脚本如下

    #脚本如下
    [root@web ~]# cat mysql_init.sh
    #! /urs/bin/bash
    
    mysql_tmp_file=/tmp/mysql.init
    User=bi
    
    #1.初始化MySQL服务
    touch ${mysql_tmp_file}
    
    #2.模拟用户删除文件
    useradd ${User}
    su - ${User} -c "rm -f ${mysql_tmp_file} &>/dev/null"
    
    #3.检查是否删除成功
    if [ $? -eq 0 ];then
        echo "${mysql_tmp_file}文件被${User}用户删除成功,该目录不是sbit,mysql初始化失败"
    else
        echo "${mysql_tmp_file}文件被${User}用户删除失败,该目录是sbit,mysql初始化成功"
    fi
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
  • 结果测试与验证

    #默认粘滞位测试
    [root@web ~]# sh mysql_init.sh
    /tmp/mysql.init 文件被 bi 用户删除失败,该目录是sbit,mysql初始化成功
    
    #修改为普通目录测试
    [root@web ~]# chmod 777 /tmp/
    [root@web ~]# sh mysql_init.sh
    /tmp/mysql.init 文件被bi 用户删除成功,该目录不是sbit,mysql初始化失败
    
    1
    2
    3
    4
    5
    6
    7
    8

# SBIT作用总结

  • 让所有普通用户对该目录具有写入权限,并且能实现每个用户只能删自己的文件;
  • 粘滞位目录表现在others的×位,用t表示;
  • 粘滞位目录的属主以及root用户有权限删除目录中的内容,其他用户无权限删除;
#Linux
Last Updated: 2021/11/12, 16:51:33
基础权限
文件特殊属性

← 基础权限 文件特殊属性→

最近更新
01
谷歌云创建GKE集群
07-26
02
ElastiCacheForRedis启用密码
07-26
03
upload-to-gcs
06-29
更多文章>
Theme by Vdoing | Copyright © 2021-2024 Brc | MIT License | 浙ICP备19031881号-4
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式