Linux sudo 命令

Linux sudo 命令

Linux 命令大全

sudo 全称为 Super User DO,允许授权用户以其他用户(通常是 root 用户)的身份执行命令,也就是说,经由 sudo 所执行的指令就好像是 root 亲自执行。

使用权限:在 /etc/sudoers 中有出现的使用者。

语法sudo [选项] 命令

例如:

sudo apt update # 以 root 权限更新软件包列表

sudo vim /etc/hosts # 编辑需要 root 权限的文件

参数说明:

-i: 模拟初始登录,加载目标用户的环境

-s: 运行shell

-u user: 以指定用户身份运行

-l: 列出当前用户可执行的sudo命令

-v: 验证用户凭据(延长sudo会话)

-k: 撤销sudo凭据缓存

实例

以 root 权限执行单个命令:

sudo apt update

sudo systemctl restart nginx

sudo mkdir /opt/myapp

切换到 root 用户shell:

sudo -i # 登录shell,加载root环境变量

sudo -s # 非登录shell

sudo su - # 另一种方式

以其他用户身份执行命令:

sudo -u username command

sudo -u postgres psql # 以 postgres 用户运行 psql

检查可用权限:

sudo -l

编辑系统文件:

sudo nano /etc/hosts

sudo vim /etc/nginx/nginx.conf

配置文件

sudo 的配置存储在 /etc/sudoers 文件中,应该使用 visudo 命令编辑:

sudo visudo

常见配置示例:

# 允许用户免密码执行所有命令

username ALL=(ALL) NOPASSWD: ALL

# 允许用户组执行特定命令

%wheel ALL=(ALL) /bin/systemctl, /usr/bin/apt

常见问题

用户不在 sudoers 文件:

# 需要 root 用户将目标用户加入 sudo 组:

usermod -aG sudo username # Ubuntu/Debian

usermod -aG wheel username # CentOS/RHEL

缓存时间调整:

修改 /etc/sudoers 中的 timestamp_timeout(单位:分钟):

Defaults timestamp_timeout=30

su vs sudo 的区别

特性

su

sudo

需要密码

目标用户密码

当前用户密码

会话持续

直到手动exit

单次命令或短时间缓存

配置复杂度

简单

需要配置sudoers

安全性

需要知道root密码

更细粒度的权限控制

审计

有限

更详细的日志

su 命令虽然简单直接,但在现代系统管理中,sudo 通常是更推荐的选择,因为它提供了更好的安全性和审计能力。

Linux 命令大全