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

Linux命令:sudo

sudo 命令

基本介绍

sudo(Superuser Do)是 Linux 系统中用于以其他用户身份执行命令的工具。它允许授权用户以 root 或其他用户身份执行特权命令,而不需要知道目标用户的密码。sudo是系统管理员进行特权操作的重要工具,提供了比su更安全的权限管理方式。

资料合集:https://pan.quark.cn/s/6fe3007c3e95https://pan.quark.cn/s/561de99256a5https://pan.quark.cn/s/985f55b13d94https://pan.quark.cn/s/d0fb20abd19a

语法

sudo [OPTIONS] COMMAND

常用选项

基本选项

  • -b, --background:在后台执行命令
  • -c, --command=COMMAND:执行指定命令
  • -E, --preserve-env:保留环境变量
  • -e, --edit:编辑文件(而非执行命令)
  • -g, --group=GROUP:指定执行命令的组
  • -h, --help:显示帮助信息
  • -i, --login:模拟登录 shell(读取目标用户的环境变量)
  • -k, --kill:清除用户的 sudo 时间戳缓存
  • -l, --list:列出用户可用的 sudo 命令
  • -n, --non-interactive:非交互式模式(不提示密码)
  • -p, --prompt=PROMPT:自定义密码提示
  • -s, --shell:启动指定的 shell
  • -u, --user=USER:指定执行命令的用户
  • -V, --version:显示版本信息
  • -v, --validate:更新用户的 sudo 时间戳缓存

使用示例

1. 以 root 身份执行命令

sudoapt-getupdate

2. 以指定用户身份执行命令

sudo-uusernamecommand

3. 以指定组身份执行命令

sudo-ggroupnamecommand

4. 模拟登录 shell

sudo-i

5. 编辑文件

sudo-e/etc/sudoers

6. 列出可用命令

sudo-l

7. 清除时间戳缓存

sudo-k

8. 更新时间戳缓存

sudo-v

9. 在后台执行命令

sudo-bapt-getupgrade-y

10. 保留环境变量执行命令

sudo-Eenv

11. 非交互式执行(不提示密码)

echo"password"|sudo-Scommand

12. 自定义密码提示

sudo-p"Enter your password: "command

输出格式说明

成功执行

# 执行命令的输出

错误输出示例

sudo: password incorrect sudo: user is not in the sudoers file

sudo -l 输出示例

User username may run the following commands on this host: (ALL : ALL) ALL

sudoers 配置文件

配置文件位置

  • /etc/sudoers:主配置文件
  • /etc/sudoers.d/:配置文件目录

配置格式

user host=(user:group) command

配置示例

# 允许 user 以 root 身份执行所有命令userALL=(ALL)ALL# 允许 user 以指定用户身份执行命令userALL=(root)/usr/bin/apt-get# 允许用户组 sudo 成员执行所有命令%sudoALL=(ALL)ALL# 无需密码执行命令userALL=(ALL)NOPASSWD: ALL# 设置命令别名Cmnd_Alias UPDATE=/usr/bin/apt-get update, /usr/bin/apt-get upgrade userALL=(ALL)UPDATE

工作原理

sudo 执行流程

# 1. 用户执行 sudo 命令sudoapt-getupdate# 2. sudo 检查 /etc/sudoers 配置# 3. 提示输入当前用户密码(如果需要)# 4. 验证密码并更新时间戳缓存# 5. 以目标用户身份执行命令# 6. 返回结果

时间戳缓存机制

# 检查时间戳状态sudo-v# 清除时间戳sudo-k# 默认缓存时间为 5 分钟

实用技巧

配置无需密码的 sudo

# 编辑 sudoers 文件sudovisudo# 添加配置(将 username 替换为实际用户名)usernameALL=(ALL)NOPASSWD: ALL

创建命令别名

# 编辑 sudoers 文件sudovisudo# 添加命令别名Cmnd_Alias SYSTEM=/usr/bin/reboot, /usr/bin/shutdown, /usr/bin/halt Cmnd_Alias PACKAGE=/usr/bin/apt-get, /usr/bin/dpkg# 授权用户执行指定命令usernameALL=(ALL)SYSTEM, PACKAGE

限制用户只能执行特定命令

# 编辑 sudoers 文件sudovisudo# 只允许用户执行特定命令usernameALL=(ALL)/usr/bin/apt-get update, /usr/bin/apt-get upgrade

日志记录

# 查看 sudo 日志sudocat/var/log/auth.log|grepsudo

在脚本中使用 sudo

#!/bin/bash# 检查是否有 sudo 权限ifsudo-ntrue2>/dev/null;thenecho"User has sudo access"elseecho"User does not have sudo access"exit1fi# 执行需要 sudo 的操作sudoapt-getupdatesudoapt-getupgrade-y

sudo 与 su 的对比

特性sudosu
密码验证当前用户密码目标用户密码
权限控制细粒度(基于 sudoers)全权限
日志记录自动记录不记录
安全性更高(可审计)较低
环境变量默认保留默认切换

相关命令

  • su:切换用户身份
  • visudo:安全编辑 sudoers 文件
  • whoami:显示当前用户
  • id:显示用户和组ID信息
  • groups:显示用户所属组
  • passwd:设置用户密码

注意事项

  1. 权限要求:用户必须在 sudoers 文件中有授权
  2. 密码缓存:sudo 会缓存密码一段时间(默认为 5 分钟)
  3. 安全编辑:使用visudo编辑 sudoers 文件,避免语法错误
  4. 日志记录:sudo 操作会记录到系统日志
  5. 环境变量:使用-E选项保留环境变量
  6. 非交互式:使用-n选项不提示密码(需要配置 NOPASSWD)

总结

sudo是 Linux 系统中用于以其他用户身份执行命令的工具。它提供了比su更安全、更细粒度的权限管理方式。通过/etc/sudoers配置文件,可以精确控制用户可以执行哪些命令。sudo是系统管理员进行特权操作的重要工具。

http://www.jsqmd.com/news/996561/

相关文章:

  • 大模型稀疏激活原理:MoE架构如何实现1.8万亿参数仅2%动态计算
  • 三菱PLC通信选型指南:A-1E vs Qna-3E,你的FX3U和FX5U项目到底该用哪个?
  • C#写的BACnet调试小工具,带图形界面,支持设备发现和属性读写
  • 技术创业中的隐性成本:从技术债务到合规风险的全面审视
  • STM32H743xI性能调优实战:避开多主设备争抢AXI总线的坑,提升DMA2D刷屏效率
  • 3分钟快速上手:OptiScaler游戏画质优化终极指南
  • 机器学习生产化四层治理:从数据契约到模型可观测
  • 同城快递配送员接单App源码(含本地SQLite订单管理)
  • 告别纸上谈兵:用CEVA-BX2 DSP软核,手把手教你搭建5G基带处理仿真环境
  • 从RTP到RTMP:手把手拆解ZLMediaKit中MultiMediaSourceMuxer的协议转换魔法
  • OpenMV图像处理实战:在1.8寸小屏上实时追踪色块并串口输出坐标(避坑QQVGA设置)
  • 从智能音箱到车载通话:拆解3A算法(AEC/ANS/AGC)在不同硬件上的落地挑战
  • 硬件开发者必看:手把手教你基于OCP NVMe SSD v2.5规范设计合规的E1.S/U.2盘
  • 避开理想陷阱:用CGH40010F真实模型优化Doherty功放设计的几个实用技巧
  • 从一行Verilog到FPGA芯片:手把手拆解Vivado综合后,你的代码变成了哪些硬件资源?
  • 别再乱用set_input_transition了!给DC/PT新手的时钟约束避坑指南:set_clock_transition的正确打开方式
  • C语言里那个不起眼的E和e,你真的用对了吗?从printf到scanf的完整避坑指南
  • IGOFormer:几何感知Transformer在航向目标检测中的应用
  • 鸿蒙原生开发——从零构建呼吸引导器
  • 2026年壮苗的花卉肥料/油菜肥料优质公司推荐 - 品牌宣传支持者
  • Layui-admin企业级后台管理系统:10倍开发效率的革命性解决方案
  • 从加密算法到访问控制:深入理解UDS安全访问0x27的设计哲学与实现
  • Cursor破解工具终极指南:3种方法解锁AI编辑器免费VIP功能
  • 实战:从零构建IBIS模型(硬件信号完整性:一)
  • ElementUI弹窗确认按钮放左边还是右边?从用户习惯和防误操作角度,聊聊this.$confirm的最佳实践
  • 面试官问我LCA,我讲了倍增和Tarjan还不够,他让我用并查集再实现一遍?
  • 2026年热门的调味面制品辣条/平江辣条/湖南调味面制品辣条优质供应商推荐 - 行业平台推荐
  • Python继承的本质:从is-a关系到可维护系统设计
  • 2026年口碑好的阜阳定制网站建设/阜阳网站建设设计/阜阳电商网站建设用户推荐公司 - 品牌宣传支持者
  • 【Rust】19-FFI、ABI 与跨语言边界设计