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 的重要实用场景。
相关推荐
@insist1236 小时前
网络工程师-生成树协议(STP/RSTP/MSTP)核心原理与应用
服务器·开发语言·网络工程师·软考·软件水平考试
末日汐6 小时前
传输层协议UDP
linux·网络·udp
zzzsde8 小时前
【Linux】库的制作和使用(3)ELF&&动态链接
linux·运维·服务器
CQU_JIAKE8 小时前
4.3【A]
linux·运维·服务器
AI周红伟8 小时前
OpenClaw是什么?OpenClaw能做什么?OpenClaw详细介绍及保姆级部署教程-周红伟
大数据·运维·服务器·人工智能·微信·openclaw
Elastic 中国社区官方博客8 小时前
当 TSDS 遇到 ILM:设计不会拒绝延迟数据的时间序列数据流
大数据·运维·数据库·elasticsearch·搜索引擎·logstash
qing222222228 小时前
Linux中修改mysql数据表
linux·运维·mysql
Alvin千里无风8 小时前
在 Ubuntu 上从源码安装 Nanobot:轻量级 AI 助手完整指南
linux·人工智能·ubuntu
TechWayfarer8 小时前
科普:IP归属地中的IDC/机房/家庭宽带有什么区别?
服务器·网络·tcp/ip
杨云龙UP9 小时前
Oracle 中 NOMOUNT、MOUNT、OPEN 怎么理解? 在不同场景下如何操作?_20260402
linux·运维·数据库·oracle