Linux sudo 命令

Linux sudo 命令

Linux 命令大全 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 命令大全 Linux 命令大全

本文经用户投稿或网站收集转载,如有侵权请联系本站。

发表评论

0条回复

    作者信息