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

Linux 安全 - SUID机制

文章目录

  • 一、文件权限位
  • 二、SUID简介

一、文件权限位

(1)

$ ls -l text.txt 
-rw-rw-r-- 1 yl yl 0 Sep 28 16:25 text.txt

其中第一个字段-rw-rw-r–,我们可以把它分为四部分看:

-rw-rw-r--
1-     :第一个字符表示文件的类型
(2)rw-   :第 2-4 个字符表示文件所有者权限位
(3)rw-   :5-7 个字符表示所属组权限位
(4)r--	   :8 -10 个字符表示其他用户权限位

每个文件和目录都有一组权限位,用于控制对其的访问和操作权限。文件权限由九个位组成,分为三组,每组三个位,分别代表文件所有者、所属组和其他用户的权限。

这三组权限位分别是:
(1)文件所有者权限位:这组权限位控制文件所有者对文件的权限。它们的顺序是读取(r,位值为4)、写入(w,位值为2)和执行(x,位值为1)。文件所有者权限位的符号表示为:例如,rw-表示文件所有者具有读取和写入权限,但没有执行权限。

(2)所属组权限位:这组权限位控制与文件属于相同组的其他用户对文件的权限。它们的顺序和符号表示与文件所有者权限位相同。

(3)其他用户权限位:这组权限位控制所有其他用户对文件的权限,即除了文件所有者和所属组之外的用户。同样,它们的顺序和符号表示与文件所有者权限位相同。

在文件权限中,每个用户类型可以具有读取、写入和执行的权限组合。对于目录而言,读取权限允许查看目录内容,写入权限允许创建、删除和重命名目录中的文件,执行权限允许进入目录并访问其内容。

(2)
特殊权限:权限格式中可以存在三个特殊权限字符:
“s”(setuid、setgid):当出现在所有者或所属组的执行权限中时,表示设置了 setuid 或 setgid 权限。如果相应的读取或写入权限未设置,则用 “S” 表示。
“t”(粘着位):当出现在目录的其他用户执行权限中时,表示粘着位。通常用于限制只有文件所有者能删除目录中的文件。

当文件设置了SUID权限时,文件的权限位会显示为包含"S"的特殊形式。具体来说,文件所有者权限位中的执行权限位 “x” 将被替换为 “s”。这表示当执行该文件时,它将以文件所有者的权限运行。

以下是SUID权限位的不同组合及其含义:
-rwS------:文件所有者具有读写权限,并且设置了SUID权限。其他用户没有任何权限。
-rwSr-xr-x:文件所有者具有读写权限,并且设置了SUID权限。所属组和其他用户具有读取和执行权限。
-rwsr-xr-x:文件所有者具有读写执行权限,并且设置了SUID权限。所属组和其他用户具有读取和执行权限。

要设置SUID权限,可以使用chmod命令与数字或符号表示法。例如,chmod 4755 file将文件的权限设置为-rwsr-xr-x,其中SUID权限被设置为文件所有者的执行权限。

二、SUID简介

在Linux中,SUID(Set User ID)是一种权限机制,用于赋予程序在执行时临时获取文件所有者的权限。当一个可执行文件具有SUID权限时,无论是哪个用户执行该文件,该程序都会以文件所有者的权限运行,而不是执行者自身的权限。

SUID机制允许普通用户执行特定的程序或命令,以便执行特权操作,例如修改系统配置或访问受限资源。一个典型的例子是/usr/bin/passwd命令,它具有SUID权限,因此普通用户可以在不具备修改密码文件权限的情况下,通过执行该命令来更改自己的密码。

类似的还有 sudo、su命令等,比如在普通用户下执行sudo就可以执行root权限可以执行的操作。
在这里插入图片描述
SUID权限位:SUID由文件权限位中用户部分的"s"表示。如果一个文件被设置了SUID位,会表现在所有者(文件的属主)的权限的可执行位上(x)。

所有者的权限的可执行位(x)上定义了一个补充的s位,如果文件设置了SUID,那么它在执行的时候,会把进程的权限(euid)设置成文件属主的uid。
当设置了SUID时,还需要所有者的执行权限。当s这个标志出现在文件所有者的x权限上时,则就被称为Set UID。

可以使用chmod命令的数字符号(“4”)或符号符号(“u+s”)来设置SUID位。

执行上下文:当用户执行一个启用了SUID的程序时,该程序以文件所有者的有效用户ID(EUID)运行。这暂时提升了运行程序的用户的权限级别到文件所有者的级别。

SUID权限仅对二进制程序(binary program)有效,不能用在脚本上(script)。

这个SUID机制就是专门为提升/切换用户权限而设计的,切换用户也必须先提升到root用户才能切换到其他用户。在这类文件被执行后,不需要验证密码,进程的euid被设置成文件属主的uid,如果文件属主是root用户当前进程就有了root权限,同时这时进程的uid和euid也不相等了。

因此当我们以普通用户在终端上执行 passwd,sudo 等命令时,比如普通用户的uid是1000,那么终端上的bash进程是普通用户的uid1000,当执行 passwd,sudo 等命令时, passwd,sudo 等二进制文件设置了SUID位,这么bash进程的euid以文件所有者的有效用户ID(EUID)运行,而 passwd,sudo 等二进制文件是由root用户管理的,其文件属主的用户名是 root 用户,因此passwd,sudo 等二进制文件的 EUID 等于 root 用户的uid = 0,因此bash进程的euid以文件所有者的有效用户ID = 0运行,这暂时提升了bash程序的用户的权限级别到文件所有者的级别。这样就达到了提升用户权限的作用了。

在这里插入图片描述
除了以用户和用户组控制权限,还有以下凭证机制:

Capabilities
Secure management flags (securebits)
Keys and keyrings
LSM
AF_KEY

详细请参考:Linux 安全 - Credentials

相关文章:

Linux 安全 - SUID机制

文章目录 一、文件权限位二、SUID简介 一、文件权限位 (1) $ ls -l text.txt -rw-rw-r-- 1 yl yl 0 Sep 28 16:25 text.txt其中第一个字段-rw-rw-r–,我们可以把它分为四部分看: -rw-rw-r--(1)- &a…...

Nginx与Spring Boot的错误模拟实践:探索502和504错误的原因

文章目录 前言502和504区别---都是Nginx返回的access.log和error.log介绍SpringBoot结合Nginx实战502 and 504准备工作Nginx配置host配置SpringBoot 502模拟access.logerror.log 504模拟access.logerror.log 500模拟access.logerror.log 总结 前言 刚工作那会,最常…...

全志ARM926 Melis2.0系统的开发指引①

全志ARM926 Melis2.0系统的开发指引① 1. 编写目的2. Melis2.0 系统概述3. Melis2.0 快速开发3.1. Melis2.0 SDK 目录结构3.2. Melis2.0 编译环境3.3. Melis2.0 固件打包3.4. Melis2.0 固件烧录3.5.串口打印信息3.6. Melis2.0 添加和调用一个模块3.6.1. 为什么划分模块&#xf…...

2024级199管理类联考之数学基础(下篇)

平面几何(平均2题) 三角形(性质、特殊三角形、全等与相似) 性质 由不在同一直线的三条线段首尾依次连接所组成的图形三条边、三个内角、三个定点三角形内角和为180度,外角和为360度,多边形的外角和为360度,n多边形的内角和为(n-2)*180度一个外角等于不相邻的两个内角之和任意…...

HTML之如何下载网页中的音频(二)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 人生格言: 人生…...

【现代机器人学】学习笔记十四:中文版印刷/翻译勘误

首先声明,这个印刷/勘误并非经过官方的认可,只是我个人的粗浅的理解。如果内容有误,恳请大家谅解指正。 其实有的并不算错,只是我个人认为不太准确,在我学习过程中产生了一些小疑惑和误解。 都是一些小毛病&#xff…...

[架构之路-229]:计算机体硬件与系结构 - 计算机系统的矩阵知识体系结构

目录 一、纵向:目标系统的分层结构 1.1 目标系统的架构 1.2 网络协议栈 1.3 计算机程序语言分层 二、横向(构建目标系统的时间、开发阶段):软件工程 三、二维矩阵知识体系结构 一、纵向:目标系统的分层结构 1.1…...

第一章 visual studio下载安装

一、官网下载 地址:https://visualstudio.microsoft.com/zh-hans/ 点击免费visual studio 二、安装 运行下载好的exe文件,自定义安装目录 三、选择需要的组件安装 只需要选择标记组件,然后点击安装 等待安装完成就行 四、重启电脑 安装完之后…...

【服务器】在 Linux CLI 下安装 Anaconda

【服务器】在 Linux CLI 下安装 Anaconda 1 系统环境2 下载安装包3 安装 1 系统环境 查看系统信息 cat /etc/os-release2. 查看架构 uname -a # output # Linux localhost.localdomain 4.18.0-193.28.1.el8_2.x86_64 #1 SMP Thu Oct 22 00:20:22 UTC 2020 x86_64 x86_64 x86…...

Python中Lambda用法

在Python中,lambda函数是一种形式较短的函数,又称为匿名函数。与正常的函数不同,lambda函数没有名称,因此只能在定义时直接传递给其他函数或变量使用,而不能单独调用。 lambda函数的语法非常简单,格式如下…...

nodejs+vue养老人员活体鉴权服务系统elementui

系统 统计数据:统计报表、人员台账、机构数据、上报数据、核验报表等,养老人员活体鉴权服务是目前国家养老人员管理的重要环节,主要为以养老机构中养老人员信息为基础,每月进行活体鉴权识别并统计数据为养老补助等管理。前端功能&…...

解决caffe中的python环境安装的问题(补充)

上一篇(解决caffe中的python环境安装的问题_qiuchangyong的博客-CSDN博客)说到了安装过程中遇到的常见问题,其实还有一个忘了补充,就是在执行命令"sudo python -m pip install -r requirements.txt"后,出现p…...

面试常用排序查找算法

文章目录 1 二分查找2 冒泡排序3 堆排序4 插入排序5 快速排序6 选择排序7 希尔排序 1 二分查找 定义两个变量left和right,分别表示数组的左边界和右边界,初始值分别为0和len - 1,其中len是数组的长度。计算数组的中间位置mid,公式…...

CUDA C编程权威指南:1.1-CUDA基础知识点梳理

主要整理了N多年前(2013年)学习CUDA的时候开始总结的知识点,好长时间不写CUDA代码了,现在LLM推理需要重新学习CUDA编程,看来出来混迟早要还的。 1.CUDA 解析:2007年,NVIDIA推出CUDA&#xff08…...

讲讲项目里的仪表盘编辑器(四)分页卡和布局容器组件

讲讲两个经典布局组件的实现 ① 布局容器组件 配置面板是给用户配置布局容器背景颜色等属性。这里我们不需要关注 定义文件 规定了组件类的类型、标签、图标、默认布局属性、主文件等等。 // index.js import Container from ./container.vue; class ContainerControl extends…...

Qt模块、Qt开发应用程序类型、Qt未来主要市场、Qt6功能普及

Qt模块、Qt开发应用程序类型、Qt未来主要市场、Qt6功能普及 文章目录 1.Qt核心模块2.Qt的功能拓展3.Qt未来主要市场4.Qt6功能普及5.弃用的功能: Qt是一个跨平台的应用程序开发框架,提供了丰富的模块和工具来开发各种类型的应用程序。以下是Qt目前已有的…...

nodejs+vue高校校图书馆elementui

管理员输入书籍所在的书架位置,借阅提醒系统:可以查看个人借阅信息和图书到期提醒、挂失、检索、虚拟借书证不仅为群众提供了服务,而且也推广了自己,让更多的群众了解自己。 管理员页面: 第三章 系统分析 10 3.1需求分…...

CUDA C编程权威指南:1.2-CUDA基础知识点梳理

主要整理了N多年前(2013年)学习CUDA的时候开始总结的知识点,好长时间不写CUDA代码了,现在LLM推理需要重新学习CUDA编程,看来出来混迟早要还的。 1.闭扫描和开扫描   对于一个二元运算符 ⊕ \oplus ⊕和一个 n n n元…...

C语言—位运算符

目录 &&#xff08;位与&#xff0c;AND&#xff09;&#xff1a; |&#xff08;位或&#xff0c;OR&#xff09;&#xff1a; 位取反(~)&#xff1a; 左移(<<)&#xff1a; 右移(>>)&#xff1a; &&#xff08;位与&#xff0c;AND&#xff09;&…...

怎么才能实现一个链接自动识别安卓.apk苹果.ipa手机和win电脑wac电脑

您想要实现的功能是通过检测用户代理&#xff08;User Agent&#xff09;来识别访问设备类型并根据设备类型展示相应的页面。您可以根据以下步骤进行实现&#xff1a; 选择后端语言和框架&#xff0c;例如&#xff1a;Node.js、Express。 创建一个新的Express项目。 编写一个…...

zookeeper选举机制

全新集群选举 zookeeper 全新集群选举机制网上资料很多说法很模糊&#xff0c;仔细思考了一下&#xff0c;应该是这样 得到票数最多的机器>机器总数半数 具体启动过程中的哪个节点成为 leader 与 zoo.cfg 中配置的节点数有关&#xff0c;下面以3个举例 选举过程如下 server…...

vcpkg切换 Visual Studio 版本

vcpkg切换 Visual Studio 版本 在使用vcpkg作为项目的包管理工具时&#xff0c;可能会遇到需要切换Visual Studio版本的情况。下面是一种简单的方法来实现这个目标&#xff0c;通过修改triplet文件来指定使用的Visual Studio版本。 步骤1: 创建或修改Triplet文件 首先&#…...

运算符重载

#include <iostream> using namespace std; class Num { private:int num1; //实部int num2; //虚部 public:Num(){}; //无参构造Num(int n1,int n2):num1(n1),num2(n2){}; //有参构造~Num(){}; //析构函数const Num operator(const Num &other)const //加号重载{Nu…...

Llama2-Chinese项目:7-外延能力LangChain集成

本文介绍了Llama2模型集成LangChain框架的具体实现&#xff0c;这样可更方便地基于Llama2开发文档检索、问答机器人和智能体应用等。 1.调用Llama2类   针对LangChain[1]框架封装的Llama2 LLM类见examples/llama2_for_langchain.py&#xff0c;调用代码如下所示&#xff1a;…...

ES6中数组的扩展

1. 扩展运算符 用三个点(...)表示&#xff0c;它如同rest参数的逆运算&#xff0c;将数组转为用逗号分隔的参数序列。扩展就是将一个集合分成一个个的。 console.log(...[1, 2, 3]); // 1, 2, 3可以用于函数调用 扩展运算符后还可以放置表达式 ...(x > 0 ? [a] : [])如…...

计算机考研 | 2016年 | 计算机组成原理真题

文章目录 【计算机组成原理2016年真题44题-9分】【第一步&#xff1a;信息提取】【第二步&#xff1a;具体解答】 【计算机组成原理2016年真题45题-14分】【第一步&#xff1a;信息提取】【第二步&#xff1a;具体解答】 【计算机组成原理2016年真题44题-9分】 假定CPU主频为5…...

Web版Photoshop来了,用到了哪些前端技术?

经过 Adobe 工程师多年来的努力&#xff0c;并与 Chrome 等浏览器供应商密切合作&#xff0c;通过 WebAssembly Emscripten、Web Components Lit、Service Workers Workbox 和新的 Web API 的支持&#xff0c;终于在近期推出了 Web 版 Photoshop&#xff08;photoshop.adobe…...

FL Studio21.1.0水果中文官方网站

FL Studio 21.1.0官方中文版重磅发布纯正简体中文支持&#xff0c;更快捷的音频剪辑及素材管理器&#xff0c;多样主题随心换&#xff01;Mac版新增对苹果M2/1家族芯片原生支持。DAW界萌神&#xff01;极富二次元造型的水果娘FL chan通过FL插件Fruity Dance登场&#xff0c;为其…...

[BJDCTF2020]Mark loves cat

先用dirsearch扫一下&#xff0c;访问一下没有什么 需要设置线程 dirsearch -u http://8996e81f-a75c-4180-b0ad-226d97ba61b2.node4.buuoj.cn:81/ --timeout2 -t 1 -x 400,403,404,500,503,429使用githack python2 GitHack.py http://8996e81f-a75c-4180-b0ad-226d97ba61b2.…...

@SpringBootApplication注解的理解——如何排除自动装配 分布式情况下如何自动加载 nacos是怎么被发现的

前言 spring作为主流的 Java Web 开发的开源框架&#xff0c;是Java 世界最为成功的框架&#xff0c;持续不断深入认识spring框架是Java程序员不变的追求。 本篇博客介绍SpringBootApplicant注解的自动加载相关内容 其他相关的Spring博客文章列表如下&#xff1a; Spring基…...

盐城网站推广哪家好/免费seo工具汇总

认识主机板煮 鸡板....咳&#xff01;「主机板」&#xff08;Motherboard&#xff09;不算电脑里最先进的零组件&#xff0c;但绝对是塞最多东西的零组件。事实上&#xff0c;现在新的主机板简直像怪物&#xff0c;上面 可能有数十个长长短短、大大小小、圆的方的、各式各样的插…...

网上公司注册/英文网站seo发展前景

实验四 查找----基于词频的文件相似度 分析&#xff1a; 该实验的难度在于对倒排索引表的构建&#xff0c;在该实验中&#xff0c;我采用了链表作为索引表&#xff0c;哈希表作为存储单词的表&#xff0c;在索引表内存储单词的位置用来访问哈希表。另外一个难点在于&#xff0…...

个人网站建设好之后怎么赚钱/网站搜索关键词优化

以管理员身份运行cmd&#xff0c;然后输入&#xff1a; 1 net user administrator /active:yes 然后注销&#xff0c;就会看到你原来的用户已经是最高权限的用户了。以后做的操作都是最高权限的操作。转载于:https://www.cnblogs.com/by-1075324834/p/5204125.html...

蓝色网站特点/湖南seo优化推荐

resize2fsresize2fs命令被用来增大或者收缩未加载的“ext2/ext3”文件系统的大小。如果文件系统是处于mount状态下&#xff0c;那么它只能做到扩容&#xff0c;前提条件是内核支持在线resize。linux kernel 2.6支持在mount状态下扩容但仅限于ext3文件系统。语法resize2fs(选项)…...

椒江区建设局网站/seo经理招聘

Gradle(二) —— 运行自己的应用1. 综述 完成简单的 Hello World 之后&#xff0c;怎么运行我们的程序呢&#xff0c;有三种方法&#xff1a; 直接用 IDE&#xff0c;右键 -> run Main.main在 gradle.build 中加入 application plugin&#xff0c;进行一些配置&#xff0c;然…...

公司年前做网站好处/网站检测中心

单线程在好些年前的MS-DOS时代&#xff0c;操作系统处理问题都是单任务的&#xff0c;我想做听音乐和看电影两件事儿&#xff0c;那么一定要先排一下顺序。(好吧&#xff01;我们不纠结在DOS时代是否有听音乐和看影的应用。^_^)from time import ctime,sleepdef music():for i …...