wiki/运维/Linux/笔记/35.sudo配置.md
2026-04-08 19:40:00 +08:00

103 lines
2.1 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

## 1、`sudo` 概览
`sudo` 是 Linux 中常见的权限委派机制,允许管理员授权普通用户以更高权限执行指定命令,而不必直接告诉对方 `root` 密码。
它的核心价值在于:
- 最小权限授权
- 便于审计操作记录
- 避免多人共用 root 密码
## 2、基本概念
`sudo` 配置的核心通常写在:
```shell
/etc/sudoers
```
也可以拆分到:
```shell
/etc/sudoers.d/
```
实际修改时,**强烈建议使用**
```shell
visudo
```
这样可以在保存前做语法检查,避免配置写坏导致 sudo 不可用。
## 3、sudoers 规则格式
常见格式大致是:
```text
用户或组 主机列表=(可切换身份) 命令列表
```
典型示例:
```text
root ALL=(ALL:ALL) ALL
```
含义可以理解为:
- `root`:用户
- `ALL`:允许从任意主机规则匹配
- `(ALL:ALL)`:可以切换为任意用户和组身份执行
- `ALL`:允许执行任意命令
## 4、常见授权方式
### 4.1 授权单个用户
```text
lzc ALL=(ALL:ALL) ALL
```
表示用户 `lzc` 可以执行任意 sudo 命令,执行时通常需要输入自己的密码。
### 4.2 授权用户组
```text
%devops ALL=(ALL:ALL) ALL
```
表示 `devops` 组内用户可执行 sudo 命令。
### 4.3 免密执行
```text
%devops ALL=(ALL:ALL) NOPASSWD: ALL
```
表示 `devops` 组内用户执行 sudo 时不需要输入密码。
## 5、常见运维建议
- 优先按**用户组**授权,而不是给每个人单独写规则
- 能精细授权命令时,尽量不要直接给 `ALL`
- 免密 sudo 要谨慎,只给可信场景
- 修改 sudo 配置时优先用 `visudo`
- 生产环境中建议结合审计日志一起使用
## 6、排障提示
如果 sudo 突然不可用,优先检查:
- `/etc/sudoers` 是否有语法错误
- `/etc/sudoers.d/` 中是否有冲突规则
- 文件权限是否正确
- 当前用户是否真的属于目标用户组
## 7、小结
- `sudo` 用于做权限委派,而不是直接共享 root
- 核心配置在 `/etc/sudoers``/etc/sudoers.d/`
- 推荐使用 `visudo` 修改配置
- 最佳实践是最小权限、分组授权、谨慎免密