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 的重要实用场景。
相关推荐
Crazy CodeCrafter3 分钟前
租金要交,但客流为零,要关店了?
大数据·运维·经验分享·自动化·开源软件
zopple8 分钟前
Knife4j文档请求异常(基于SpringBoot3,查找原因并解决)
java·服务器·数据库
侯侯Hou11 分钟前
Linux系统安装OpenClaw
linux
charlie11451419134 分钟前
2026年IMX6ULL正点原子Alpha开发板学习方案——U-Boot完全移植概览:从官方源码到你的自制板,这条路有多远
linux·学习·嵌入式·uboot·嵌入式linux·工程实践·编程指南
oioihoii1 小时前
数据库查询优化中的谓词下推策略与成本感知优化实践
服务器·数据库·oracle
学习是生活的调味剂1 小时前
大模型应用之使用LangChain实现RAG(二)智能客服
服务器·数据库·langchain
高梦轩1 小时前
LNMP 环境部署笔记
linux·笔记
HAPPY酷1 小时前
Linux `shutdown` 命令速查:安全关机与重启
linux·chrome·安全
zhping10111 小时前
Linux 系统上使用 GitHub 加速工具
linux·运维·github
dreamread1 小时前
Linux下MySQL的简单使用
linux·mysql·adb