Linux sudo 命令完全指南

Linux 中 sudo 命令是做什么的

Linux 中 sudo 命令的作用

sudo 是 superuser do 的缩写,核心作用是让普通用户在获得授权的前提下,以超级用户(root)或其他指定用户的身份执行指定的命令 ,是 Linux 系统中实现权限精细化管理的核心工具,也是保障系统安全的重要方式(避免普通用户直接登录 root 带来的风险)。

简单来说:普通用户默认没有修改系统配置、安装软件、操作系统文件等高级权限,通过 sudo 可临时获取这些高权限执行单条 / 多条命令,执行完成后会回到普通用户的权限状态。

核心特性

  1. 权限可控 :并非所有普通用户都能使用 sudo,只有在授权配置文件 /etc/sudoers(或其包含的子文件/etc/sudoers.d/)中被添加的用户 / 用户组,才拥有 sudo 执行权限,且可精准限定其能执行的具体命令
  2. 密码验证 :默认情况下,用户第一次执行 sudo 时,需要输入自身的登录密码 (而非 root 密码),验证通过后会有5 分钟左右的免密期(可配置),期间再次执行 sudo 无需重复输密码。
  3. 操作审计 :所有通过 sudo 执行的命令,都会被记录到系统日志(如/var/log/auth.log/var/log/secure)中,方便管理员审计系统操作,排查权限相关问题。
  4. 灵活切换:可通过 sudo 临时切换到 root 或其他用户的交互终端,也可仅执行单条高权限命令,兼顾便捷性和安全性。

常用基础用法

1. 以 root 身份执行单条命令

这是最常用的场景,格式:sudo 待执行的高权限命令

复制代码
\# 普通用户无权限修改系统配置文件,通过sudo执行

sudo vi /etc/fstab

\# 普通用户无权限安装软件,通过sudo执行(以apt为例)

sudo apt install nginx

\# 普通用户无权限查看系统核心日志,通过sudo执行

sudo cat /var/log/secure

2. 以 root 身份打开交互终端

临时切换到 root 终端,执行完所有操作后,输入exit可回到原普通用户终端,格式:sudo -isudo su

复制代码
\# 方式1:推荐,会加载root的环境变量,更贴合root登录状态

sudo -i

\# 方式2:基础切换,部分环境变量仍保留原用户配置

sudo su

\# 执行完操作后,退出root终端

exit

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

默认以 root 身份执行,也可通过-u指定其他用户,格式:sudo -u 目标用户名 命令

复制代码
\# 以用户alice的身份执行ls命令,查看alice的家目录

sudo -u alice ls /home/alice

\# 以用户www-data(web服务默认用户)的身份创建文件

sudo -u www-data touch /var/www/test.txt

4. 免密执行 sudo 命令

执行sudo时跳过密码验证,需管理员在/etc/sudoers中配置(谨慎使用,仅限信任用户),示例配置(给用户 ubuntu 免密所有 sudo 命令):

复制代码
\# 管理员先通过sudo打开配置文件(必须用visudo,会自动语法检查,避免配置错误)

sudo visudo

\# 在文件末尾添加如下内容,保存退出

ubuntu  ALL=(ALL) NOPASSWD: ALL

5. 查看当前用户可执行的 sudo 命令

格式:sudo -l,可查看当前登录用户被授权的所有 sudo 操作,方便确认自身权限范围

复制代码
sudo -l

与 su 命令的核心区别

很多新手会混淆 sudosu,二者核心差异在于权限管理和使用逻辑,对比更清晰:

特性 sudo su
密码要求 输入自身普通用户密码 输入目标用户(如 root)密码
权限控制 精细化授权(可限定具体命令) 完全获取目标用户的所有权限
系统安全 风险低(仅授权必要命令,可审计) 风险高(直接获取 root 全权限,无细粒度控制)
配置文件 /etc/sudoers(需 visudo 编辑) 无需额外配置

总结 :生产环境中优先使用 sudo 执行高权限操作,禁止普通用户直接使用 su 切换 root(可通过配置禁用),从源头降低系统误操作、权限泄露的风险。

重要注意事项

  1. 编辑sudoers配置文件时,必须使用 visudo命令 ,而非直接vi /etc/sudoersvisudo会在保存时自动检查配置语法,若有错误会提示并阻止保存,避免因配置错误导致所有用户无法使用 sudo(直接编辑可能因语法错误让 sudo 失效,且无法恢复)。
  2. 仅给信任的用户 / 用户组分配 sudo 权限,尤其是免密 sudo,避免权限滥用。
  3. 若忘记 root 密码,可通过拥有 sudo 权限的普通用户 执行sudo passwd root,直接重置 root 密码,这是 sudo 的重要实用场景。
相关推荐
落羽的落羽40 分钟前
【算法札记】练习 | Week4
linux·服务器·数据结构·c++·人工智能·算法·动态规划
Mortalbreeze43 分钟前
深度理解文件系统 ---- 从磁盘存储到内核存储
大数据·linux·数据库
сокол2 小时前
【网安-Web渗透测试-内网渗透】域环境权限维持
服务器·windows·网络安全·系统安全
十六年开源服务商2 小时前
2026服务器配置优化与WordPress运维实战指南
android·运维·服务器
LN花开富贵4 小时前
Ubuntu aarch64 架构安装 NoMachine 远程控制 避坑与实战
linux·运维·笔记·学习·ubuntu·嵌入式
取经蜗牛4 小时前
Windows 11 WSL + Ubuntu 24.04 安装指南
linux·windows·ubuntu
杨云龙UP4 小时前
Oracle RAC/ODA环境下如何准确查询PDB表空间已分配大小?一次说清Oracle表空间逻辑大小和ASM三副本实际占用_2026-05-19
linux·运维·数据库·sql·oracle·ffmpeg
东湖山上4 小时前
GTAC: A Generative Transformer for Approximate Circuits
服务器·人工智能·深度学习·transformer·gpu算力
2023自学中4 小时前
imx6ull开发板,Linux-c编程,识别 键盘、鼠标、触摸屏坐标
linux·嵌入式·开发板·应用编程
码点滴4 小时前
K8s配置与存储运维自动化:从隐形杀手到 AI Agent 安全闭环
运维·人工智能·自动化