Linux文件的特殊权限(SUID|SGID|SBIT)

news2024/11/19 17:26:52

一、SUID

介绍:SUID是一种对二进制程序进行设置的特殊权限,能够让二进制程序的执行者临时拥有所有者的权限(仅对拥有执行权限的二进制程序有效)。

(一)语法格式

chmod u+s 文件名(设置SUID权限)

chmod u-s 文件名(取消SUID权限)

#文件属主的x权限,用s代替.表示被设置了SUID

#如果属主位没有x权限,会显示为大写S,表示有故障(权限无效) 

(二)普通用户quintin对vim是有执行权限的,而对/etc/passwd则没有编辑权限.

(三)通常情况下quintin启动vim后,系统会创建一个以当前用户quintin为属主属组的vim进程,此时vim进程的属主属组为quintin:quintin,由于无论是属主还是属组都不具有对/etc/passwd的编辑权限,所以这个vim进程无权编辑/etc/passwd.

(四)而给/usr/bin/vim设置了SUID之后,quintin或任何用户启动vim程序时,系统创建的vim进程的属主则是取了/usr/bin/vim这个程序文件自身的属主root,所以此时vim进程的属主属组为root:quintin. 系统检查发现正好匹配了/etc/passwd的属主,于是放行vim进程

(五)案例

1、使用SUID修改root用户的文件

(1)复制/etc/passwd 为passwd1,切换到普通用户进行编辑,可以发现无法保存,没有写入权限

(2)修改vim二进制文件,使普通用户在在编辑时拥有所属人的权限

(3)切换到普通用户,并编辑passwd1文件,并保存(提示只读不用管,强制保存即可。)

(4)取消对vim的SUID,在次尝试能否修改。

2、练习:使用SUID实现touch命令创建文件,所属人为root。(自己练习)

二、SGID

介绍:SGID特殊权限有两种应用场景:

(一)语法格式

1、chmod g+s 目录或文件(设置SGID权限)

2、chmod g-s 目录或文件(取消SGID权限)

3、#文件属组的x权限,用s代替.表示被设置了SGID

4、#如果属组位没有x权限,会显示为大写S,表示有故障(权限无效)

(二)当对二进制程序进行设置时,能够让执行者临时获取文件所属组的权限

1、使用SUID创建文件的效果,使用普通用户runoob创建文件asd时,所属人成为了root。

2、使用SGID创建文件的效果,使用普通用户runoob创建文件asd时,所属组成为了root。

(三)当对目录进行设置时,则是让目录内新创建的文件自动继承该目录原有用户组的名称

1、新建两个目录,分别分配给两个不同的用户组,用于测试。

2、对这两个目录赋予777、SGID权限

3、新建test01用户,并使用test01用户登录,进入两个目录创建文件,查看文件所属组是否与目录相同

(效果1)

(效果2)

三、SBIT

介绍:SBIT特殊权限位可确保用户只能删除自己的文件,而不能删除其他用户的文件。换句话说,当对某个目录设置了SBIT粘滞位权限后,那么该目录中的文件就只能被其所有者执行删除操作了。

(一)语法格式

1、chmod o+t 目录(设置SBIT权限)

2、chmod o-t 目录(取消SBIT权限)

3、#文件其他人的x权限,用t代替.表示被设置了SBIT

4、#如果其他人位没有x权限,会显示为大写T,表示有故障(权限无效) 

(二)SBIT通常设置在目录中,对于一个多人可写的目录,如果设置了SBIT,则每个用户仅能删除和改名自己的文件或目录;只能作用在目录上.普通文件设置无意义,且会被linux内核忽略

(三)案例:各个用户只能删除自己的文件

1、先赋予/tmp目录777权限,即所属人、所属组、其他人可读可写可执行。

2、测试普通用户能否删除root用户的文件,结论,可以删除。

3、配置SBIT权限,请使用root用户进行配置

4、切换到普通用户,再次尝试删除root用户文件,提示权限不足

5、切换到其他用户,尝试删除test01用户的文件,可以看到也无法删除

6、使用test01进行删除,可以删除。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1610061.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

VsCode配置SSH连接远程服务器(手把手,学不会打我)

闲言少叙,直接上步骤。 1.打开VsCode安装插件 安装完成后可以看到左边多了一个图标Remote Explorer,如下图所示 2.添加服务器连接配置 点击该选项卡会进入SSH TARGETS的添加,如下图: 在点击红框框住的加号,会让你输…

鸿蒙系列--第一个程序HelloWorld

一、下载安装 下载DevEco Studio(https://developer.huawei.com/consumer/cn/deveco-studio/)并安装 二、创建第一个鸿蒙应用 Next Compile SDK:鸿蒙SDK版本 Mode:ArkTS的声明式开发范式与类Web 开发范式,官方主推S…

vLLM-prefix浅析(System Prompt,大模型推理加速)

原文:vLLM-prefix浅析(System Prompt,大模型推理加速) 简介 本文浅析了在大模型推理加速方面一个非常优秀的项目 vLLM 的一个新特性 Prefix。在 Prompt 中有相同前缀时可以提高吞吐量降低延迟,换句话说可以省去这部分…

哈希函数、哈希表、布隆过滤器、一致性哈希

哈希函数 工程的哈希函数展示 哈希值根据余数分组的均匀性 哈希表原理 一致性哈希 虚拟节点技术

C++ 类对象

C是一种功能强大的编程语言,它拥有丰富的特性集合,使得我们可以编写出高效、可维护且性能卓越的代码。其高级概念包括运算符重载、静态成员、友元函数、匿名对象和嵌套类。这些概念在面向对象编程中扮演着至关重要的角色,它们提供了对对象行为…

Maxwell安装使用和简单案例

一、解压 cd /opt/software/ ​ tar -zxvf maxwell-1.29.2.tar.gz -C /opt/module/ ​ cd /opt/module/ 二、MySQL 环境准备 1、修改 mysql 的配置文件 修改 mysql 的配置文件,开启 MySQL Binlog 设置 vi /etc/my.cnf 添加以下内容 server_id1 log-binmysql-…

一篇文章带你掌握⽹络原理--HTTP/HTTPS(HTTP各个部分详解和HTTPS加密详解)

HTTP HTTP是什么? HTTP(全称为"超⽂本传输协议")是⼀种应⽤⾮常⼴泛的应⽤层协议. HTTP诞⽣与1991年.⽬前已经发展为最主流使⽤的⼀种应⽤层协议. 最新的HTTP3版本也正在完善中,⽬前Google/Facebook等公司的产品已经⽀持了. HTTP往往是基于传输层的TCP协议实现的…

软件测试方法汇总

种类繁多,记忆起来混乱, 如果把软件测试方法进行分类, 就会清晰很多。 我参考一些书籍和网上的资料, 把常用的软件测试方法列出来, 让大家对软件测试行业有个总体的看法。 从测试设计方法分类 总结: 实际工作中&…

29. 【Android教程】折叠列表 ExpandableListView

本节学习一个可折叠的 ListView,可以用在一些需要分类的场景下。通过 ExpandableListView 我们可以首先在 ListView 上展示大的分类,当点击某个类别的时候再将 ListView 做一个展开,展示该类下的所有子类供用户选择。它与 ListView 的不同主要…

css样式,经典老问题回顾

跑到了一堆来了 这时需要在父div加相对定位的css 传说中的 子绝父相

Python Flask Web框架快速入门

Flask 入门Demo Flask 开发环境搭建,执行如下指令: pip install flask # 第一节: Flask 快速入门from flask import Flask app Flask(__name__)app.route(/flask) def hello_flask():return Hello Flaskapp.run() 核心代码剖析: 从 fla…

微信小程序开发之多图片上传+.NET WebAPI后端服务保存图片资源

前言: 最近开发的一个微信小程序项目需要做一个同时选中三张(或者是多张)图片一起上传到服务端,服务端保存图片资源并保存的功能。发现在微信小程序开发中会有很多场景会使用到多图片上传并保存到的功能,所以我把自己总…

酷开科技抓住“客厅经济”发展的机遇,不断对酷开系统升级赋能

酷开科技抓住“客厅经济”发展的机遇,不断对酷开系统升级赋能,打造新的生活场景,满足消费者的不同生活需求,酷开科技的产品和服务让消费者能够在家庭空间中享受到更加智能、便捷和温馨的时光。同样凭借更加包容、开放的生态体验&a…

unordered_map 与map使用说明

目录 背景: 问题分析: 使用APE工具,查看录制的原始门信号是否存在异常 查看报文读取是否存在问题 分析报文读取代码 为什么在Windows系统中,解析后的门信号没有存在跳变情况 是否Windows 和Linux下 unordered_map中数据先后…

文本批量高效编辑管理,支持将文本进行自定义行数进行拆分,实现文本的高效管理

在信息爆炸的时代,文本文件的管理和编辑成为了许多工作和学习中不可或缺的一部分。面对大量的文本内容,如何高效地进行编辑和管理成为了一个挑战。现在,我们为您带来了一款强大的批量文本编辑管理工具,支持自定义行数拆分&#xf…

面试题集中营—分布式共识算法

分布式共识算法目标 分布式主要就是为了解决单点故障。一开始只有一个服务节点提供服务,如下图所示。那么如果服务节点挂了,对不起等着吧。 为了服务的高可用性,我们一般都会多引入几个副节点当备份,当服务节点挂了,就…

BRC20铭文铭刻解析

BRC20铭文铭刻的出现对于智能制造无疑是一个重要的里程碑。随着科技的飞速发展,智能制造已经成为制造业发展的必然趋势!智能制造是指通过运用人工智能、物联网、大数据等先进技术,实现生产过程的自动化、智能化和高效化。 1. BRC20铭文的概念…

2024常见的自动化测试工具和框架!

在软件测试领域,自动化测试框架有很多,这里主要介绍几种常用的自动化测试框架。 以下是几种常用的自动化测试框架: Selenium:Selenium 是一个功能强大的Web应用程序测试框架,支持多种编程语言,如Java、Pyt…

在ELF 1开发环境中使用Qt Creator进行远程调试

Qt Creator是一款跨平台集成开发环境(IDE),主要适用于支持Qt框架的各类应用程序开发。其内置的远程调试机制使得开发者能够在本地开发环境中对部署在远程设备上的代码进行调试,无需直接对远程设备进行操作。Qt Creator会通过网络连…

Django中的实时通信:WebSockets与异步视图的结合

👽发现宝藏 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。【点击进入巨牛的人工智能学习网站】。 在现代Web应用程序中,实时通信已经成为了必不可少的功能之一。无论是在线聊天、…