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 的重要实用场景。
相关推荐
CTO Plus技术服务中2 小时前
分布式存储HBase开发与运维教程
运维·分布式·hbase
开开心心_Every2 小时前
家常菜谱软件推荐:分类齐全无广告步骤详细
linux·运维·服务器·华为od·edge·pdf·华为云
i建模2 小时前
在 Arch Linux 中安装 **Xorg 服务器**
linux·运维·服务器
liyuanchao_blog2 小时前
linuxptp适配记录
linux·云计算
RisunJan2 小时前
Linux命令-logger(将消息写入系统日志)
linux·运维
智驾2 小时前
嵌入式Linux DMA深度解析:原理、应用与性能优化实践
linux·dma
Trouvaille ~3 小时前
【Linux】线程同步与互斥(一):线程互斥原理与mutex详解
linux·运维·服务器·c++·算法·线程·互斥锁
Fᴏʀ ʏ꯭ᴏ꯭ᴜ꯭.3 小时前
Keepalived 双主(Active‑Active)模式
运维·服务器
HalvmånEver3 小时前
Linux:进程 vs 线程:资源共享与独占全解析(线程四)
java·linux·运维