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

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.lqws.cn/news/115093.html

相关文章:

  • 09.MySQL内外连接
  • 【Linux仓库】冯诺依曼体系结构与操作系统【进程·壹】
  • 理解网络协议
  • 【免费】酒店布草洗涤厂自动统计管理系统(1)——智能编程——仙盟创梦IDE
  • Java SpringBoot 调用大模型 AI 构建智能应用实战指南
  • 记一次运行spark报错
  • RabbitMQ 开机启动配置教程
  • 在compose中的Canvas用kotlin显示多数据波形闪烁的问题
  • 中电金信:从智能应用到全栈AI,大模型如何重构金融业务价值链?
  • 数据结构第八章(一) 插入排序
  • 目标检测任务的评估指标P-R曲线
  • 【学习记录】如何使用 Python 提取 PDF 文件中的内容
  • 【C语言】通用统计数据结构及其更新函数(最值、变化量、总和、平均数、方差等)
  • 服务定位器模式在嵌入式系统中应用实现
  • 在虚拟宇宙中低语——进程间通信,Linux命名管道的前世今生
  • 【Linux】进程 信号保存 信号处理 OS用户态/内核态
  • 力扣面试150题--岛屿数量
  • 【位运算】丢失的数字(easy)
  • linux操作系统---网络协议
  • 【开源工具】基于PyQt5工作时长计算器工具开发全解析
  • Appium如何支持ios真机测试
  • 宝塔使用docker创建n8n
  • 如何在IDE中通过Spark操作Hive
  • Hive开窗函数的进阶SQL案例
  • 笔记 | docker构建失败
  • 【转bin】EXCEL数据转bin
  • 图神经网络实战——图属性度量方法详解
  • Electron打包前端和后端为exe
  • stress 服务器压力测试的工具学习
  • 无字母数字webshell的命令执行