当前位置: 首页 > news >正文

文件特殊权限:SUID,SGID,SBIT

我们之前认识的文件的权限仅局限于r,w,x,但如果我们执行命令“ll /tmp; ll /usr/bin/passwd”,会出现除了r,w,x之外的其他字母:

即出现了特殊权限(s跟t)。

【SetUID】

当s这个标志出现在文件所有者的x权限上时,此时就被称为Set UID,简称为SUID的特殊权限。

我们认识一下SUID的权限对于文件的功能:

  1. SUID权限仅对二进制程序(binary program)有效;
  2. 执行者对于该程序需要具有x的可执行权限;
  3. 本权限仅在执行该程序的过程中(run-time)有效;
  4. 执行者将具有该程序所有者(owner)的权限。

举个例子,我们的Linux系统中,所有账号的密码都记录在/etc/shadow这个文件里面,这个文件的权限为“-r-------- 1 root root”,意思是这个文件仅有root可读且仅有root可以强制写入而已。既然这个文件仅有root可以修改,那为什么liuyu这个一般账号用户却能自行修改自己的密码呢?

明明/etc/shadow的权限就不能让liuyu这个一般账号去访问的,为什么liuyu还能够修改这个文件内的密码呢?

这就是SUID的功能了!!

由上述介绍的功能,我们可以知道:

  1. liuyu对于/usr/bin/passwd这个程序来说是具有x权限的,表示liuyu能执行passwd;
  2. passwd的拥有者是root这个账户;
  3. liuyu执行passwd的过程中,会“暂时”获得root的权限;
  4. /etc/shadow可以被liuyu所执行的passwd所修改。

但如果liuyu使用cat却不能读取/etc/shadow!!这是因为cat不具有SUID的权限,所以liuyu执行“cat /etc/shadow”是不能读取/etc/shadow的。

此外,SUID仅可用在二进制程序上,不能够用在shell script上面。这是因为shell script只是将很多的二进制执行文件调进来执行而已。所以SUID的权限部分,还是得要看shell script调用进来的程序的设置,而不是shell script本身。当然,SUID对于目录也是无效的!!

【Set GID】

当s这个标志出现在用户组的x权限上时,此时就被称为Set UID, SUID。

与SUID不同的是,SGID既可以针对文件,也可以针对目录来设置。

对文件来说,SGID具有如下功能:

SGID对二进制程序有用;

程序执行者对于该程序来说,需具备x的权限;

执行者在执行的过程中将会获得该程序用户组的支持。

当一个目录设置了SGID的权限后,它将具有如下的功能:

用户若对于此目录具有r与x的权限时,该用户能够进入此目录;

用户在此目录下的有效用户组将会变成该目录的用户组;

若用户在此目录下具有w的权限(可以创建文件),则用户所创建的新文件的用户组与此目录的用户组相同。

SGID对于项目开发来说是非常重要的,因为这涉及用户组权限的问题。

【Sticky Bit】

这个SBIT目前只针对目录有效,对于文件已经没有效果了。

SBIT对于目录的作用是:

当用户

 

转载于:https://www.cnblogs.com/xzxl/p/7518468.html

相关文章:

  • 11.03 在外链接中用OR逻辑
  • 将文件名从1变为000001
  • 重构之美-跨越Web标准,触碰语义网[分离:通用也许是个美丽陷阱]
  • shell脚本(1)
  • 笔记-Kotlin学习
  • 【Unity Shader】五、Shader纹理映射,及纹理的缩放和偏移
  • img 样式单和属性
  • 统计学基于SPSS贾俊平 授课笔记 发布作业 spss19cn 软件下载地址及破解包spss19_10039 下载地址...
  • zabbix监控模板大全
  • 2017杭州云栖大会—移动云专场【赠票】
  • seaJS源码
  • apache 日志轮询三种方法
  • Django REST框架-基于类的视图
  • 玩转算法面试:(三)LeetCode数组类问题
  • TensorFlow 之 高层封装slim,tflearn,keras
  • Bootstrap JS插件Alert源码分析
  • CentOS7简单部署NFS
  • Codepen 每日精选(2018-3-25)
  • extjs4学习之配置
  • Gradle 5.0 正式版发布
  • mockjs让前端开发独立于后端
  • Redis中的lru算法实现
  • Spring Cloud(3) - 服务治理: Spring Cloud Eureka
  • 阿里中间件开源组件:Sentinel 0.2.0正式发布
  • 反思总结然后整装待发
  • 关于使用markdown的方法(引自CSDN教程)
  • 好的网址,关于.net 4.0 ,vs 2010
  • 面试总结JavaScript篇
  • 前端代码风格自动化系列(二)之Commitlint
  • 前嗅ForeSpider采集配置界面介绍
  • [Shell 脚本] 备份网站文件至OSS服务(纯shell脚本无sdk) ...
  • Java数据解析之JSON
  • 交换综合实验一
  • 浅谈sql中的in与not in,exists与not exists的区别
  • 如何在招聘中考核.NET架构师
  • ​ssh免密码登录设置及问题总结
  • ## 临床数据 两两比较 加显著性boxplot加显著性
  • #pragma multi_compile #pragma shader_feature
  • (9)STL算法之逆转旋转
  • (八)光盘的挂载与解挂、挂载CentOS镜像、rpm安装软件详细学习笔记
  • (博弈 sg入门)kiki's game -- hdu -- 2147
  • (三分钟)速览传统边缘检测算子
  • (一)Java算法:二分查找
  • (一)认识微服务
  • (一)使用Mybatis实现在student数据库中插入一个学生信息
  • .net core 实现redis分片_基于 Redis 的分布式任务调度框架 earth-frost
  • .NET Framework 的 bug?try-catch-when 中如果 when 语句抛出异常,程序将彻底崩溃
  • .NET程序员迈向卓越的必由之路
  • .net利用SQLBulkCopy进行数据库之间的大批量数据传递
  • @Tag和@Operation标签失效问题。SpringDoc 2.2.0(OpenApi 3)和Spring Boot 3.1.1集成
  • [④ADRV902x]: Digital Filter Configuration(发射端)
  • [Android]通过PhoneLookup读取所有电话号码
  • [CTO札记]盛大文学公司名称对联
  • [HDU] 1054 Strategic Game 入门树形DP
  • [hive] sql中distinct的用法和注意事项