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

Linux中su与sudo命令的区别:权限管理的关键差异解析

💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。
推荐:「stormsha的主页」👈,「stormsha的知识库」👈持续学习,不断总结,共同进步,为了踏实,做好当下事儿~
非常期待和您一起在这个小小的网络世界里共同探索、学习和成长。💝💝💝 ✨✨ 欢迎订阅本专栏 ✨✨

在这里插入图片描述

💖The Start💖点点关注,收藏不迷路💖

📒文章目录

    • 1. 基础概念与功能定位
      • 1.1 su命令的本质:用户身份切换
      • 1.2 sudo命令的核心理念:权限委托
      • 1.3 关键区别概览
    • 2. 技术实现与安全机制
      • 2.1 身份验证流程差异
      • 2.2 配置文件解析
        • 2.2.1 su的PAM模块配置
        • 2.2.2 sudo的精细化控制
      • 2.3 环境变量处理
    • 3. 典型应用场景对比
      • 3.1 何时使用su?
      • 3.2 何时使用sudo?
      • 3.3 危险用法警示
    • 4. 高级技巧与替代方案
      • 4.1 组合使用技巧
      • 4.2 新兴替代工具
      • 4.3 企业级实践建议
    • 5. 总结


在Linux系统中,权限管理是系统安全的核心环节。susudo作为最常用的权限切换工具,常被初学者混淆使用,但二者在实现机制、安全性和适用场景上存在本质区别。理解它们的差异不仅能帮助用户更高效地管理系统,还能避免因误用导致的安全风险。


1. 基础概念与功能定位

1.1 su命令的本质:用户身份切换

  • 定义su(Substitute User)用于切换当前用户身份
  • 核心功能
    • 通过密码验证切换到目标用户(如su - root输入root密码)
    • 保留原用户环境变量(不加-参数时):
      $ su root      # 继承当前Shell环境
      $ su - root    # 加载root的完整环境
      
    • 完全继承目标用户的权限和限制(切换后拥有该用户所有权限)

1.2 sudo命令的核心理念:权限委托

  • 定义sudo(Superuser Do)基于策略的临时权限提升
  • 设计哲学
    • 最小权限原则:仅授权特定命令(如允许用户管理服务但禁止删除文件)
    • 免密码切换(通过NOPASSWD配置):
      # /etc/sudoers配置示例
      user1 ALL=(ALL) NOPASSWD: /usr/bin/systemctl
      
    • 详细的日志审计功能(记录到/var/log/auth.log):
      Aug 1 10:00:00 host sudo: user1 : TTY=pts/0 ; COMMAND=/usr/bin/apt update
      

1.3 关键区别概览

特性susudo
权限范围完整用户权限精确到命令级别
密码验证目标用户密码当前用户密码(默认)
环境隔离可继承原环境默认重置环境
典型应用长期身份切换临时特权命令执行

2. 技术实现与安全机制

2.1 身份验证流程差异

  • su的验证过程
    # 密码验证依赖PAM模块
    $ su - user2
    Password: ***  # 输入user2的密码
    
  • sudo的验证流程
    # 验证当前用户密码并检查sudoers规则
    $ sudo /usr/bin/vim /etc/hosts
    [sudo] password for current_user: ***
    

2.2 配置文件解析

2.2.1 su的PAM模块配置
  • /etc/pam.d/su控制访问策略:
    # 仅允许admin组成员使用su
    auth    required    pam_wheel.so    group=admin
    
2.2.2 sudo的精细化控制
  • /etc/sudoers语法示例:
    # 允许developers组执行docker命令
    %developers ALL=(root) /usr/bin/docker
    
  • 安全建议:
    • 使用visudo编辑(自动检查语法)
    • 限制危险命令:
      user3 ALL=(ALL) !/usr/bin/rm -rf /
      

2.3 环境变量处理

  • su的环境继承
    # 测试环境变量差异
    $ echo $PATH
    /usr/local/bin:/usr/bin
    $ su root
    # PATH保持不变
    
  • sudo的环境重置
    $ sudo printenv PATH
    /usr/sbin:/usr/bin:/sbin:/bin  # 默认安全路径
    

3. 典型应用场景对比

3.1 何时使用su?

  • 场景1:数据库管理员需要完整MySQL用户环境
    su - mysql -s /bin/bash
    
  • 场景2:恢复被锁定的root账户
    # 单用户模式下强制切换
    su -
    

3.2 何时使用sudo?

  • 场景1:开发人员部署应用
    sudo systemctl restart nginx
    
  • 场景2:多用户服务器权限分配
    # sudoers配置示例
    user4 ALL=(op) /usr/bin/git pull
    

3.3 危险用法警示

  • su的典型风险
    # 错误:在自动化脚本中使用su
    echo "password123" | su -c "rm -rf /tmp/*"
    
  • sudo配置漏洞
    # 危险配置:允许任意命令执行
    user5 ALL=(ALL) NOPASSWD: ALL
    

4. 高级技巧与替代方案

4.1 组合使用技巧

  • 审计型切换
    # 通过sudo记录su操作
    sudo su - audit_user
    

4.2 新兴替代工具

  • doas基础配置
    # /etc/doas.conf
    permit nopass user6 cmd /usr/bin/pacman
    
  • polkit图形授权
    <!-- 允许普通用户挂载USB -->
    <action id="org.freedesktop.udisks2.filesystem-mount"><defaults><allow_any>yes</allow_any></defaults>
    </action>
    

4.3 企业级实践建议

  • 关键安全措施
    • 禁用root远程登录:
      # /etc/ssh/sshd_config
      PermitRootLogin no
      
    • sudo会话超时设置:
      Defaults    timestamp_timeout=5
      

5. 总结

  • 决策流程图
    ┌─────────────┐    ┌─────────────┐
    │ 需要完整环境 │ →  │     su      │
    └─────────────┘    └─────────────┘
    ┌─────────────┐    ┌─────────────┐
    │ 临时命令执行 │ →  │    sudo     │
    └─────────────┘    └─────────────┘
    
  • 终极安全准则
    1. 禁止共享root密码
    2. sudoers配置遵循最小权限
    3. 关键操作必须留有审计日志

🔥🔥🔥道阻且长,行则将至,让我们一起加油吧!🌙🌙🌙

💖The Start💖点点关注,收藏不迷路💖

相关文章:

Linux中su与sudo命令的区别:权限管理的关键差异解析

&#x1f49d;&#x1f49d;&#x1f49d;欢迎莅临我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐&#xff1a;「storms…...

《从零掌握MIPI CSI-2: 协议精解与FPGA摄像头开发实战》-- CSI-2 协议详细解析LLP (二)

低层协议&#xff08;Low Level Protocol, LLP&#xff09;详细解析 1. 低层协议&#xff08;Low Level Protocol, LLP&#xff09;核心特性 包基础 &#xff1a;基于字节的包协议&#xff0c;支持 短包 &#xff08;32位&#xff09;和 长包 &#xff08;可变长度&#xff0…...

第4天:RNN应用(心脏病预测)

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 目标 具体实现 &#xff08;一&#xff09;环境 语言环境&#xff1a;Python 3.10 编 译 器: PyCharm 框 架: Pytorch &#xff08;二&#xff09;具体步骤…...

Python训练day40

知识点回顾&#xff1a; 彩色和灰度图片测试和训练的规范写法&#xff1a;封装在函数中 展平操作&#xff1a;除第一个维度batchsize外全部展平 dropout操作&#xff1a;训练阶段随机丢弃神经元&#xff0c;测试阶段eval模式关闭dropout 作业&#xff1a;仔细学习下测试和训练…...

湖北理元理律师事务所:债务优化中的民生保障实践

在债务纠纷数量年增21%&#xff08;2023年最高人民法院数据&#xff09;的背景下&#xff0c;法律服务机构如何平衡债务清偿与民生保障&#xff0c;成为行业重要课题。湖北理元理律师事务所通过“法律金融心理”三维服务模式&#xff0c;探索出一条可持续的债务化解路径。 一、…...

Vue-Todo-list 案例

一、前言 在前端开发中&#xff0c;Todo List&#xff08;待办事项列表&#xff09; 是一个非常经典的入门项目。它涵盖了组件化思想、数据绑定、事件处理、本地存储等核心知识点&#xff0c;非常适合用来练习 Vue 的基本用法。 本文将带你一步步实现一个功能完整的 Vue Todo…...

GIC700概述

GIC-700是用于处理外设与处理器核之间&#xff0c;以及核与核之间中断的通用中断控制器。GIC-700支持分布式微体系结构&#xff0c;其中包含用于提供灵活GIC实现的几个独立块。 GIC700支持GICv3、GICv3.1、GICv4.1架构。 该微体系结构规模可从单核到互联多chip环境&#xff0…...

动静态库的使用(Linux)

1.库 通俗来说&#xff0c;库就是现有的&#xff0c;可复用的代码&#xff0c;例如&#xff1a;在C/C语言编译时&#xff0c;就需要依赖相关的C/C标准库。本质上来说库是一种可执行代码的二进制形式&#xff0c;可以被操作系统载入内存执行。通常我们可以在windows下看到一些后…...

Flutter、React Native 项目如何搞定 iOS 上架?从构建 IPA 到上传 App Store 的实战流程全解析

你可能会认为&#xff1a;用了跨平台框架&#xff08;如 Flutter 或 React Native&#xff09;&#xff0c;开发效率提高了&#xff0c;发布流程也该更轻松才对。 但当我第一次要将一个 Flutter 项目发布到 App Store 时&#xff0c;现实给了我一巴掌&#xff1a; “没有 Mac&…...

统信桌面专业版如何使用python开发平台jupyter

哈喽呀&#xff0c;小伙伴们 最近有学员想了解在统信UOS桌面专业版系统上开发python程序&#xff0c;Anaconda作为python开发平台,anaconda提供图形开发平台,提供大量的开发插件和管理各种插件的平台&#xff0c;但是存在版权问题&#xff0c;有没有其他工具可以替代Anaconda呢…...

移除元素-JavaScript【算法学习day.04】

题目链接&#xff1a;27. 移除元素 - 力扣&#xff08;LeetCode&#xff09; 第一种思路 标签&#xff1a;拷贝覆盖 主要思路是遍历数组 nums&#xff0c;每次取出的数字变量为 num&#xff0c;同时设置一个下标 ans 在遍历过程中如果出现数字与需要移除的值不相同时&#xff…...

Android 相对布局管理器(RelativeLayout)

俩重要属性 android:gravity android:ignoreGravity Android 相对布局管理器&#xff1a;自由排列的魔法布局 想象一下&#xff0c;你是一个室内设计师&#xff0c;需要在一个房间里摆放家具。RelativeLayout&#xff08;相对布局&#xff09;就像是一个 "自由摆放"…...

DuckDB + Spring Boot + MyBatis 构建高性能本地数据分析引擎

DuckDB 是一款令人兴奋的内嵌式分析型数据库 (OLAP)&#xff0c;它为本地数据分析和处理带来了前所未有的便捷与高效 &#x1f680;。它无需外部服务器&#xff0c;可以直接在应用程序进程中运行&#xff0c;并提供了强大的 SQL 支持和列式存储带来的高性能。 什么是 DuckDB&am…...

什么是预训练?深入解读大模型AI的“高考集训”

1. 预训练的通俗理解&#xff1a;AI的“高考集训” 我们可以将预训练&#xff08;Pre-training&#xff09; 形象地理解为大模型AI的“高考集训”。就像学霸在高考前需要刷五年高考三年模拟一样&#xff0c;大模型在正式诞生前&#xff0c;也要经历一场声势浩大的“题海战术”…...

鸿蒙仓颉语言开发实战教程:购物车页面

大家上午好&#xff0c;仓颉语言商城应用的开发进程已经过半&#xff0c;不知道大家通过这一系列的教程对仓颉开发是否有了进一步的了解。今天要分享的购物车页面&#xff1a; 看到这个页面&#xff0c;我们首先要对它简单的分析一下。这个页面一共分为三部分&#xff0c;分别是…...

OPENCV的AT函数

一.AT函数介绍 在 OpenCV 中&#xff0c;at&#xff08;&#xff09; 是一个模板成员函数&#xff0c;用于访问和修改矩阵或图像中特定位置的元素。它提供了一种直接且类型安全的方式来操作单个像素值&#xff0c;但需要注意其性能和类型匹配问题 AT函数是OPENCV中重要的函数…...

【走好求职第一步】求职OMG——见面课测验4

2025最新版&#xff01;&#xff01;&#xff01;6.8截至答题&#xff0c;大家注意呀&#xff01;博主码字不易点个关注吧~~ 1.单选题(2分) 下列不属于简历撰写技巧原则的是&#xff08; A &#xff09; A.具体性 B.相关性 C.匹配性 2.单选题(2分) 笔试的下一步一般是:( B &…...

ISO 17387——解读自动驾驶相关标准法规(LCDAS)

Intelligent transport systems — Lane change decision aid systems (LCDAS) — Performance requirements and test procedures(First edition: 2008-05-01) 原文链接&#xff1a;https://cdn.standards.iteh.ai/samples/43654/701fd49bde7b4d3db165444b7c6f0c53/ISO-17387…...

智慧零售管理中的客流统计与属性分析

智慧零售管理中的视觉分析技术应用 一、背景与需求 随着智慧零售的快速发展&#xff0c;传统零售门店面临管理效率低、安全风险高、客户体验差等问题。通过视觉分析技术&#xff0c;智慧零售管理系统可实现对门店内人员行为的实时监控与数据分析&#xff0c;从而提升运营效率…...

Ps:Adobe PDF 预设

Ps菜单&#xff1a;编辑/Adobe PDF 预设 Edit/Adobe PDF Presets 通过“Adobe PDF 预设” Adobe PDF Presets对话框&#xff0c;可以查看 Adobe PDF 预设&#xff0c;了解复杂的 PDF 设置。还可以编辑、新建、删除、载入预设&#xff0c;根据最终用途&#xff08;如高质量打印、…...

Python Excel 文件处理:openpyxl 与 pandas 库完全指南

在数据处理和分析过程中&#xff0c;Excel 文件是最常见的数据存储格式之一。Python 提供了多个库来处理 Excel 文件&#xff0c;其中 openpyxl 和 pandas 是最常用的两个库。它们各自有独特的优势&#xff0c;适用于不同的需求。本文将详细介绍如何使用这两个库来处理 Excel 文…...

九、【ESP32开发全栈指南: UDP通信服务端】

一、TCP与UDP核心差异 特性TCPUDP连接方式面向连接 (需三次握手)无连接可靠性可靠传输 (重传/排序/校验)尽力交付 (不保证可靠性)实时性延迟较高低延迟&#xff0c;实时性强传输效率协议开销大头部开销小 (仅8字节)连接类型点对点支持广播/多播资源占用高 (需维护连接状态)极低…...

靶场(二十)---靶场体会小白心得 ---jacko

老样子开局先看端口&#xff0c;先看http端口 PORT STATE SERVICE VERSION 80/tcp open http Microsoft IIS httpd 10.0 |_http-title: H2 Database Engine (redirect) | http-methods: |_ Potentially risky methods: TRACE |_http-server-header:…...

【EasyExcel】导出时添加页眉页脚

一、需求 使用 EasyExcel 导出时添加页眉页脚 二、添加页眉页脚的方法 通过配置WriteSheet或WriteTable对象来添加页眉和页脚。以下是具体实现步骤&#xff1a; 1. 创建自定义页眉页脚实现类 public class CustomFooterHandler implements SheetWriteHandler {private final…...

​​高频通信与航天电子的材料革命:猎板PCB高端压合基材技术解析​​

—聚酰亚胺/陶瓷基板在5G与航天场景的产业化应用​​ ​​一、极端环境材料体系&#xff1a;突破温域与频率极限​​ ​​聚酰亚胺基板&#xff08;PI&#xff09;的航天级稳定性​​ 猎板在卫星通信PCB中采用真空层压工艺处理聚酰亚胺基材&#xff08;Dk≈10.2&#xff09;&a…...

如何区分 “通信网络安全防护” 与 “信息安全” 的考核重点?

“通信网络安全防护” 与 “信息安全” 的考核重点可以从以下几个方面进行区分&#xff1a; 保护对象 通信网络安全防护&#xff1a;重点关注通信网络系统本身&#xff0c;包括网络基础设施&#xff0c;如路由器、交换机、基站等&#xff0c;以及网络通信链路和相关设备。同…...

Java 中 ArrayList、Vector、LinkedList 的核心区别与应用场景

Java 中 ArrayList、Vector、LinkedList 的核心区别与应用场景 引言 在 Java 集合框架体系中&#xff0c;ArrayList、Vector和LinkedList作为List接口的三大经典实现类&#xff0c;共同承载着列表数据的存储与操作功能。然而&#xff0c;由于底层数据结构设计、线程安全机制以…...

WPF技术体系与现代化样式

目录 ​​1 WPF技术架构解析​​ ​​1.1 技术演进与定位​​ ​​1.2 核心机制对比​​ ​​2 样式与资源系统​​ ​​2.1 资源(Resource)定义与作用域​​ ​​2.2 样式(Style)与触发器​​ ​​3 开发环境配置(.NET 8)​​ ​​3.1 安装流程​​ ​​3.2 项目结…...

Redis 与 MySQL 数据一致性保障方案

在高并发场景下&#xff0c;Redis 作为缓存中间件与 MySQL 数据库配合使用时&#xff0c;数据一致性是一个关键挑战。本文将详细探讨如何保障 Redis 与 MySQL 的数据一致性&#xff0c;并结合 Java 代码实现具体方案。 数据不一致的原因分析 在分布式系统中&#xff0c;Redis…...

Sentry 接口返回 Status Code 429 Too Many Requests

Sentry 是一个 开源的错误追踪&#xff08;Error Tracking&#xff09;平台&#xff0c;主要用于实时捕获和监控应用程序中的异常、错误日志&#xff0c;并帮助开发者快速定位问题根源。 &#x1f4cc; Sentry 的核心功能 自动捕获异常 自动捕捉 JavaScript、Vue、React、Node.…...