当前位置: 首页 > 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.gsyq.cn/news/1508327.html

相关文章:

  • C#写的BACnet调试小工具,带图形界面,支持设备发现和属性读写
  • 技术创业中的隐性成本:从技术债务到合规风险的全面审视
  • 从智能音箱到车载通话:拆解3A算法(AEC/ANS/AGC)在不同硬件上的落地挑战
  • 机器学习生产化四层治理:从数据契约到模型可观测
  • IGOFormer:几何感知Transformer在航向目标检测中的应用
  • Cursor破解工具终极指南:3种方法解锁AI编辑器免费VIP功能
  • ElementUI弹窗确认按钮放左边还是右边?从用户习惯和防误操作角度,聊聊this.$confirm的最佳实践
  • 2026年热门的调味面制品辣条/平江辣条/湖南调味面制品辣条优质供应商推荐 - 行业平台推荐
  • i.MX8M核心板启动卡死?别急着换板子,先查查UART的RX信号波形
  • 如何5分钟部署Keep:开源AIOps告警管理平台的一站式解决方案
  • 2026年西南岩棉板厂家实地探访:可靠供应商地址与技术能力解析 - 优质品牌商家
  • 2026年靠谱的阜阳网站建设开发/阜阳网站建设/阜阳外贸网站建设/阜阳营销型网站建设服务好的公司 - 行业平台推荐
  • 2026年口碑好的铜陵短视频/铜陵宣传片拍摄优选企业推荐 - 品牌宣传支持者
  • Java读写XML?DOM4J一出,谁与争锋
  • 不止于EGit插件:深挖JGit在自动化构建与代码审计中的隐藏用法
  • 从MOS管到变压器:工程师必知的5种寄生电容来源及其在开关电源中的‘捣乱’方式
  • 谷歌Colab(免费GPU平台)——从入门到精通的实战避坑指南
  • Vivado资源利用率报告怎么看?从LUTRAM超用报警到DSP优化,一次讲清资源瓶颈排查
  • 道可云人工智能OPC每日资讯|工信部发布《“人工智能+信息通信”创新发展实施意见(2026—2028年)》
  • 终极OFD转PDF解决方案:Ofd2Pdf完整使用指南,5分钟快速上手
  • 别慌!nvcc和nvidia-smi版本号对不上?一文讲清CUDA驱动与运行时的区别
  • 口碑好的苏州客厅地毯品牌
  • WeChatMsg:如何永久备份微信聊天记录并生成年度社交报告
  • 突破大众点评反爬技术:完整数据采集解决方案实战
  • Softmax函数的一个“小bug”?从数学角度拆解LLM注意力汇聚(Attention Sink)的根源
  • AI Agent 的Human-in-the-Loop工程实践:何时停下来问人,如何设计ApprovalFlow
  • MyBatis 中,#{} 和 ${}的区别
  • 2026年PPT转PDF保姆级教程:PowerPoint和WPS详细操作指南
  • 从STL算法到现代C++:Lambda捕获列表[ ]、[=]、[]的进阶玩法与性能考量
  • 终极猫抓资源嗅探指南:3步快速搞定网页视频音频下载