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

unix/linux,sudo,其内部结构机制

我们现在深入sudo的“引擎室”,探究其内部的结构和运作机制。这就像我们从观察行星运动,到深入研究万有引力定律的数学表达和物理内涵一样,是理解事物本质的关键一步。

sudo 的内部结构与机制详解

sudo 的执行流程可以看作是一系列精心设计的步骤,确保了授权的准确性和安全性。以下是其核心内部机制的分解:

阶段一:初始化与参数解析

  1. 执行入口 (main 函数)

    • 当你在命令行键入 sudo <command> 并回车后,操作系统加载并执行 /usr/bin/sudo 程序。
    • sudomain() 函数开始执行。
  2. SetUID 生效

    • 由于 sudo 文件具有 SetUID root 权限,此时 sudo 进程的 有效用户ID (EUID) 变成了 root (UID 0)。其实际用户ID (RUID) 仍然是你当前登录用户的ID。
    • 这意味着 sudo 进程现在拥有了root权限,可以访问受保护的系统资源,比如读取 /etc/sudoers 文件。
  3. 命令行参数解析

    • sudo 解析你传递给它的命令行选项(如 -u, -i, -l, -E 等)和要执行的命令及其参数。
  4. 加载配置文件 (sudo.conf)

    • sudo 读取其主配置文件,通常是 /etc/sudo.conf(或编译时指定的路径)。
    • 这个文件定义了 sudo 的一些全局行为,比如要加载哪些插件(策略插件、I/O插件等)、调试级别、askpass程序的路径等。
    • 插件加载:如果 sudo.conf 中配置了插件,sudo 会使用 dlopen()(或类似机制)动态加载这些共享库 (.so 文件),并调用它们的初始化函数。

阶段二:策略检查与授权 (核心阶段)

这是 sudo 最核心的部分,由策略插件 (Policy Plugin) 主导。默认的策略插件是 sudoers.so,它负责解析 /e

http://www.lryc.cn/news/2404652.html

相关文章:

  • Hadoop 3.x 伪分布式 8088端口无法访问问题处理
  • Redis线程安全深度解析:单线程模型的并发智慧
  • 零基础在实践中学习网络安全-皮卡丘靶场(第十期-Over Permission 模块)
  • 北京大学肖臻老师《区块链技术与应用》公开课:12-BTC-比特币的匿名性
  • [Harmony]网络状态监听
  • 毕设 基于机器视觉的驾驶疲劳检测系统(源码+论文)
  • Ubuntu18.6 学习QT问题记录以及虚拟机安装Ubuntu后的设置
  • Vue3中computed和watch的区别
  • 发版前后的调试对照实践:用 WebDebugX 与多工具构建上线验证闭环
  • 瀚文(HelloWord)智能键盘项目深度剖析:从0到1的全流程解读
  • Shell编程核心符号与格式化操作详解
  • 针对“仅某个地区出现Bug”的原因分析与解决方案
  • 学习STC51单片机30(芯片为STC89C52RCRC)
  • sql中group by使用场景
  • 将HTML内容转换为Canvas图像,主流方法有效防止文本复制
  • Python-进程
  • Paraformer分角色语音识别-中文-通用 FunASR demo测试与训练
  • 【从0-1的CSS】第1篇:CSS简介,选择器以及常用样式
  • 对抗反爬机制的分布式爬虫自适应策略:基于强化学习的攻防博弈建模
  • JDK21深度解密 Day 15:JDK21实战最佳实践总结
  • 手写muduo网络库(一):项目构建和时间戳、日志库
  • 每日算法刷题Day25 6.7:leetcode二分答案3道题,用时1h40min(遇到两道动态规划和贪心时间较长)
  • 14-Oracle 23ai Vector Search 向量索引和混合索引-实操
  • kubeadm安装k8s
  • 服务器新建用户无法使用conda
  • Web前端基础:JavaScript
  • 基于对比学习的带钢表面缺陷分类研究,整合SimCLR自监督预训练与YOLOv8目标检测框架的技术解析及Python实现方案
  • 基于AWS Serverless架构:零运维构建自动化SEO内容生成系统
  • 【.net core】天地图坐标转换为高德地图坐标(WGS84 坐标转 GCJ02 坐标)
  • Linux操作系统故障应急场景及对应排查方法