AI编程助手
AI免费问答

linux以其他用户身份执行是什么-sudo 命令使用与实例

P粉390130307   2025-08-14 13:30   937浏览 原创

linux以其他用户身份执行是什么-sudo 命令使用与实例

Linux sudo 命令

sudo 的全称是 Super User DO,它使得授权用户可以以另一个用户(通常是 root)的身份运行命令。通过 sudo 执行的任何操作都等同于目标用户亲自执行。

使用权限:仅限在 /etc/sudoers 文件中列出的用户。

语法格式

<pre class="brush:php;toolbar:false">sudo [参数] 命令

示例:

<pre class="brush:php;toolbar:false">sudo apt update          # 使用 root 权限更新软件源列表
sudo vim /etc/hosts     # 编辑需要管理员权限的文件

常用参数说明

  • -i: 模拟初始登录过程,加载目标用户的环境变量
  • -s: 启动 shell 环境
  • -u user: 以指定用户身份执行命令
  • -l: 查看当前用户被允许使用的 sudo 命令
  • -v: 验证用户身份(刷新 sudo 缓存时间)
  • -k: 清除当前用户的 sudo 缓存

示例操作

以 root 权限运行单一命令:

<pre class="brush:php;toolbar:false">sudo apt update
sudo systemctl restart nginx
sudo mkdir /opt/myapp

切换到 root shell 环境:

<pre class="brush:php;toolbar:false">sudo -i    # 登录式 shell,加载 root 用户配置
sudo -s    # 非登录式 shell
sudo su -  # 另一种方法

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

<pre class="brush:php;toolbar:false">sudo -u username command
<pre class="brush:php;toolbar:false">
sudo -u postgres psql  # 使用 postgres 用户启动 psql

查看当前用户可执行的 sudo 权限:

<pre class="brush:php;toolbar:false">
sudo -l

编辑受保护的系统文件:

<pre class="brush:php;toolbar:false">sudo nano /etc/hosts
sudo vim /etc/nginx/nginx.conf

配置管理

sudo 的配置信息保存在 /etc/sudoers 文件中,推荐使用 visudo 工具进行修改:

<pre class="brush:php;toolbar:false">sudo visudo

典型配置示例:

<pre class="brush:php;toolbar:false">
# 允许用户无需密码执行所有命令
username ALL=(ALL) NOPASSWD: ALL
<h1>授权用户组执行特定命令</h1><p>%wheel ALL=(ALL) /bin/systemctl, /usr/bin/apt

常见问题处理

提示“不在 sudoers 文件中”错误:

<pre class="brush:php;toolbar:false"></p><h1>需要由 root 用户将该用户加入对应组:</h1><p>usermod -aG sudo username  # Ubuntu/Debian 系统
usermod -aG wheel username # CentOS/RHEL 系统

修改缓存有效时间:

在 /etc/sudoers 中设置 timestamp_timeout 参数(单位为分钟):

<pre class="brush:php;toolbar:false">
Defaults timestamp_timeout=30

su 与 sudo 的差异对比

特性 su sudo
所需密码 目标用户密码 当前用户密码
会话持续时间 需手动退出 单次或短暂缓存
配置复杂度 简单直接 需编辑 sudoers 文件
安全性 需要知道 root 密码 更细粒度权限控制
日志审计能力 较弱 详细记录

尽管 su 命令使用简便,但在实际运维工作中,sudo 更加安全可靠,具备更强的权限管理和日志追踪能力,因此更推荐使用。

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。