Linux操作系统基础(10):Linux的特殊权限

1. 特殊权限是什么

在Linux中,特殊权限是指针对文件或目录的特殊权限设置,包括SetUID、SetGID和Sticky Bit。

  1. SetUID(Set User ID): 当一个可执行文件被设置了SetUID权限后,当任何用户执行该文件时,文件的所有者权限会被赋予执行者,而不是执行者的权限。这使得用户可以以文件所有者的身份执行文件,通常用于需要特殊权限的程序。

  2. SetGID(Set Group ID): 当一个可执行文件被设置了SetGID权限后,当任何用户执行该文件时,文件的所属组权限会被赋予执行者,而不是执行者的权限。这使得用户可以以文件所属组的身份执行文件,通常用于需要特殊权限的程序。

  3. Sticky Bit: 当一个目录被设置了Sticky Bit权限后,只有目录的所有者、文件的所有者或者root用户才能删除该目录下的文件。这通常用于共享目录,防止其他用户删除不属于自己的文件。

我们可以在Linux中使用 find 命令找到对应权限的文件或目录:

#1.查找/usr/bin目录下拥有suid权限的文件
find /usr/bin -perm /u+s

#2.查找/目录下拥有guid权限的目录
find / -type d -perm /g+s

#3.查找/目录下拥有sticky权限的目录
find / -type d -perm /o+t

2. Linux权限的示意图

在这里插入图片描述

3. Linux特殊权限的说明

3.1. SetUID权限

SetUID权限,用户可以以文件所有者的身份执行文件,通常用于需要特殊权限的程序。

  • 添加SetUID的权限,Owner的执行权限位从 x 会变为 s
  • 数字模式:4744

例如,Linux系统 passwd 修改密码的命令需要通过修改/etc/passwd文件实现,但是这个文件是权限所属于root用户,普通用户需要临时提权调用这个 passwd 命令。

#1.查看passwd命令,查看所有者的执行位权限为s
[root@localhost ~]# ls -l /usr/bin/passwd
-rwsr-xr-x. 1 root root 33424 Feb 18  2022 /usr/bin/passwd

#2.将passwd命令的setuid权限取消
[root@localhost ~]# chmod 755 /usr/bin/passwd

#3.使用普通用户jungout修改密码,发现执行错误
[root@localhost ~]# su - jungout
[jungout@localhost ~]$ passwd
Changing password for user jungout.
Current password:                                 #输入旧密码
New password:                                     #输入新密码
passwd: Authentication token manipulation error   #认证令牌操作错误

#4.切换回root用户添加setuid权限
[jungout@localhost ~]$ exit
[root@localhost ~]# chmod u+s /usr/bin/passwd

#5.再次使用jungout修改密码,执行成功
[root@localhost ~]# su - jungout
[jungout@localhost ~]$ passwd
Changing password for user jungout.
Current password:                                 #输入旧密码
New password:                                     #输入新密码
Retype new password:                              #确认新密码
passwd: all authentication tokens updated successfully.

3.2. SetGID权限

SetGID权限,用户可以以文件所属组的身份执行文件,新创建的文件或目录会继承该目录的所属组,但是只有目录的所有者、文件的所有者或者root用户才能删除该目录下的文件。

  • 添加SetGID的权限,Group的执行权限位从 x 会变为 s
  • 数字模式:2770

例如,Linux系统中一个项目的 共享目录 设置SetGID权限,共享目录的名称为:share ,这个目下执行的操作和文件都会继承该目录的所属组的权限。

#1.在/home目录下创建share的目录
[root@localhost ~]# mkdir /home/share

#2.要求/home/share的所属组是shareuser,组内成员可读可写。
[root@localhost ~]# groupadd shareuser
[root@localhost ~]# chgrp shareuser /home/share
[root@localhost ~]# chmod 770 /home/share

#3.设置sgid权限位,所属组的执行位权限为s
[root@localhost ~]# chmod g+s /home/share
[root@localhost ~]# ls -l /home | grep share 
drwxrws---. 2 root  shareuser  6 Jan  5 04:55 share

#4.将普通用户jungout添加到shareuser组
[root@localhost ~]# gpasswd -a jungout shareuser
Adding user jungout to group shareuser

#5.切换到jungout并在/home/share目录上创建file1文件(继承组权限,组内成员都可以访问)
[root@localhost ~]# su - jungout
[jungout@localhost ~]$ touch /home/share/file1
[jungout@localhost ~]$ ls -l /home/share/
-rw-rw-r--. 1 jungout shareuser 0 Jan  5 05:27 file1

3.2. Sticky Bit权限

Sticky Bit 权限,只有目录的所有者、文件的所有者或者root用户才能删除该目录下的文件,这通常用于共享目录下的私人文件,防止其他用户删除不属于自己的文件。

  • 添加 Sticky Bit 的权限,Others的执行权限位从 x 会变为 t
  • 数字模式:1777

例如,Linux系统中临时目录 /tmp ,通常用于临时存放服务的进程PID,这要求意味着所有用户都有对该目录的写入权限,但只有文件的所有者才能删除自己创建的文件。

#1.查看/tmp目录的ohter的执行权限位为:t
[root@localhost ~]# ls -l / | grep tmp
drwxrwxrwt.  16 root root 4096 Jan  5 05:42 tmp

#3.创建普通用户user1,并在/tmp目录下创建一个目录
[root@localhost ~]# useradd user1
[root@localhost ~]# su -user1
[user1@localhost ~]$ mkdir /tmp/user1-servr
[user1@localhost ~]$ exit  #返回root用户

#4.使用普通用户jungout删除/tmp/user1-servr目,操作不允许。
[root@localhost ~]# su - jungout
[jungout@localhost ~]$ rmdir /tmp/user1-services
rmdir: failed to remove '/tmp/user1-services/': Operation not permitted

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

UI5与后端的文件交互(二)

文章目录 前言一、开发Action1. 创建Structure2. BEDF添加Action3. class中实现Action 二、修改UI5 项目1. 添加一个按钮2. 定义事件函数 三、测试及解析1. 测试2. js中提取到的excel流数据3. 后端解析 前言 这系列文章详细记录在Fiori应用中如何在前端和后端之间使用文件进行…

数字图像处理(图像灰度变换、图像直方图及均衡、图像中值滤波、图像空域锐化增强、图像频域滤波)

数字图像处理(图像灰度变换、图像直方图及均衡、图像中值滤波、图像空域锐化增强、图像频域滤波) 目录 1 图像灰度变换 1.1 灰度线性变换 1.2 图像二值化 1.3 负象变换 1.4 灰度非线性变换 1.5 程序设计流程图 2 图像直方图及均衡 2.1 直方图 2…

了解单元测试

一,测试分类 1.1 E2E测试(end to end端到端测试) 属于黑盒测试。 主要通过测试框架,站在用户测试人员的角度,模拟用户的操作进行页面功能的验证,不管内部实现机制,完全模拟浏览器的行为。&am…

Pytest——Fixture夹具的使用

一、什么是Fixture 在测试开展的过程中,会需要考虑到测试前的准备工作,以及测试后的释放操作行为。这些在Pytest中,会通过Fixture的方式来实现。如果说在运行pytest的测试用例的时候,需要调用一些数据来实现测试行为,…

thingsboard规则节点功能记录(自用)

本文是对【ThingsBoard源码级分析规则节点使用第一季】 https://www.bilibili.com/video/BV1CT411e7vt/?p4&share_sourcecopy_web&vd_source9a5ca7ed3cff97385fdab4b6188e485c 学习的一些记录,加深自己的理解,在此声明。 asset profile switch…

五、HTML 标题

在 HTML 文档中&#xff0c;标题很重要。 一、HTML 标题 标题&#xff08;Heading&#xff09;是通过 <h1> - <h6> 标签进行定义的。<h1> 定义最大的标题。 <h6> 定义最小的标题。 <h1>这是一个标题。</h1> <h2>这是一个标题。&l…

微型导轨在设备中起什么作用

微型导轨精度高&#xff0c;摩擦系数小&#xff0c;自重轻&#xff0c;结构紧凑&#xff0c;可以用于电子制造设备、半导体制造设备、医疗设备、光学设备和机器人等各种工业机械设备中&#xff0c;那么微型导轨在设备中起什么作用呢&#xff1f; 1、导向与定位&#xff1a;为机…

Flume基础知识(九):Flume 企业开发案例之复制和多路复用

1&#xff09;案例需求 使用 Flume-1 监控文件变动&#xff0c;Flume-1 将变动内容传递给 Flume-2&#xff0c;Flume-2 负责存储 到 HDFS。同时 Flume-1 将变动内容传递给 Flume-3&#xff0c;Flume-3 负责输出到 Local FileSystem。 2&#xff09;需求分析&#xff1a; 3&…

【论文解读】基于神经辐射场NeRF的像素级交互式编辑(Seal-3D)

来源&#xff1a;投稿 作者&#xff1a;橡皮 编辑&#xff1a;学姐 论文链接&#xff1a;https://arxiv.org/pdf/2307.15131 项目主页&#xff1a;https://windingwind.github.io/seal-3d/ 摘要&#xff1a; 随着隐式神经表征或神经辐射场&#xff08;NeRF&#xff09;的普及…

推荐几个免费的HTTP接口Mock网站和工具

在前后端分离开发架构下&#xff0c;经常遇到调用后端数据API接口进行测试、集成、联调等需求&#xff0c;比如&#xff1a; &#xff08;1&#xff09;前端开发人员很快开发完成了UI界面&#xff0c;但后端开发人员的API接口还没有完成&#xff0c;不能进行前后端数据接口对接…

嵌入式开发——电源管理单元PMU

学习目标 了解什么是电池管理单元PMU了解ARM32中的电源域了解几种省电模式学习内容 PMU PMU全称Power Management Unit,电源管理单元。 电源域 总共有三大电源域,包括VDD / VDDA域,1.2V域和备份域。 VDD/VDDA域 VDD/VDDA域如下图: 提供PMU 常规电源供应以下模块的供电…

C# 反射的乌云,MethodInfo的Json序列化参数入参问题

文章目录 前言直接运行MethodInfo运行结果 Json解决ParamterInfo实例化运行结果无法实例化问题部分参数的问题 Json反序列化 经过长达一天的研究&#xff0c;我终于完全的解决的了实战思路方法测试用例运行测试运行结果 代码总结总结 前言 我上篇文章已经基本解决了反射的基本…

【SpringCloud】之远程消费(进阶使用)

&#x1f389;&#x1f389;欢迎来到我的CSDN主页&#xff01;&#x1f389;&#x1f389; &#x1f3c5;我是君易--鑨&#xff0c;一个在CSDN分享笔记的博主。&#x1f4da;&#x1f4da; &#x1f31f;推荐给大家我的博客专栏《SpringCloud开发之远程消费》。&#x1f3af;&a…

python画图工具总结

一、python工具 python运行工具&#xff1a;Anaconda3 Anaconda3运行模式&#xff1a;jupyter notebook 操作系统&#xff1a;window11 二、折线图 from matplotlib import pyplot import matplotlib.pyplot as plt from math import sqrt import pandas as pd from matplot…

ffmpeg.c(4.3.1)源码剖析

文章目录 前言一、FFmpeg 源码结构图二、ffmpeg.h 头文件详解三、main 函数主要流程分析四、ffmpeg_parse_options1、命令行例子①、解析命令行 split_commandline()②、parse_optgroup()③、MATCH_PER_XXX_OPT() 2、vf 选项解析①、filters②、vf 术语③、avfilter_graph_pars…

【LeetCode每日一题】2807. 在链表中插入最大公约数(模拟+求最大公约数的6中写法)

2024-1-6 文章目录 [2807. 在链表中插入最大公约数](https://leetcode.cn/problems/insert-greatest-common-divisors-in-linked-list/)思路&#xff1a;模拟求最大公约数的几种方法&#xff1a; 1.暴力枚举法2.辗转相除法3.辗转相除法 ---递归调用4.辗转相除法 ---递归调用---…

微服务注册中的负载均衡

背景 随着互联网行业的发展&#xff0c;对服务的要求也越来越高&#xff0c;服务架构也从单体架构逐渐演变为现在流行的微服务架构。这些架构之间有怎样的差别呢&#xff1f; 单体架构&#xff1a;简单方便&#xff0c;高度耦合&#xff0c;扩展性差&#xff0c;适合小型项目。…

【计算机毕业设计】SSM在线化妆品网站

项目介绍 本项目为前后台项目&#xff0c;前台为普通用户登录&#xff0c;后台为管理员登录&#xff1b; 管理员角色包含以下功能&#xff1a; 管理员登录,分类管理,产品管理,用户管理,订单管理等功能。 用户角色包含以下功能&#xff1a; 提交订单,用户登录,用户首页,查看…

MySQL数据库期末知识点总结(复习版)

一、数据库基本知识 数据库中的数据有什么特点 1、数据是按某种结构组织的 2、数据有整体性、共享性和较高的独立性 数据管理技术经历了哪三个阶段 1、手工管理 2、文件管理 3、数据库管理 数据库管理系统的主要功能有哪些 数据库管理系统的主要功能包括数据定义、数据…

欧科云链研究院:奔赴2024,Web3与AI共振引爆数字时代潘多拉魔盒

出品&#xff5c;欧科云链研究院 2024年&#xff0c;Web3与AI两个数字科技的巅峰碰撞&#xff0c;欧科云链研究院探索AI与Web3的技术融合&#xff0c;与澎湃科技联合发布2024年展望&#xff0c;原标题为《2024年展望&#xff1a;Web3与AI共振引爆可信数字社会》&#xff0c;共…