首頁 > 套件與系統管理 > sudo

sudo 命令指南:以管理员权限执行命令

`sudo` 命令(substitute user do 或 superuser do 的缩写)是一个工具,使普通用户能够以其他用户(主要是 root 用户)的权限在 Linux 和 Unix 系统上运行程序。它可以在保持系统安全的同时执行管理任务,比直接在 root 帐户下执行所有操作安全得多。通过本指南了解 `sudo` 的基本用法和重要的安全注意事项。

sudo 概述

在 Linux 系统中,root 用户拥有所有权限。然而,所有操作都以 root 身份执行可能会导致对系统造成致命损害的风险。`sudo` 是一个重要的安全机制,它允许普通用户 **临时** 获得所需的管理员权限,从而在最小化安全风险的同时进行系统管理。

sudo 的工作原理

`sudo` 在用户执行 `sudo` 命令时会请求密码(是用户自己的密码,而非 root 密码),如果密码正确,它将根据 `sudoers` 文件中定义的规则以 root 或其他用户的权限执行该命令。认证后,用户可以在一定时间内(默认是 5 分钟)无需再次输入密码即可使用 `sudo`。

sudo 的主要作用

  • **增强安全性**:防止不必要地以 root 帐户登录,从而减少安全风险。
  • **责任追踪**:通过 `sudo` 执行的所有命令都会被记录在日志中,以便追踪谁在何时执行了哪些管理员命令。
  • **细粒度权限控制**:通过 `sudoers` 文件,可以精确控制特定用户或组只能以 root 权限执行特定命令。
  • **减少密码重新输入**:认证后在一定时间内可无需输入密码使用 `sudo`,提高便利性。

🔑 sudoers 文件

/etc/sudoers

`sudo` 的所有权限设置均在 `/etc/sudoers` 文件中定义。由于此文件非常敏感,**务必使用 `visudo` 命令来编辑。** `visudo` 会自动检查语法错误,以防止由于错误配置导致 `sudo` 功能失效。

主要 sudo 命令选项

`sudo` 命令除了权限提升外,还可以通过多种选项来控制执行方式。

1. 基本用法

2. 用户和 Shell 相关选项

3. 认证和列表相关选项

生成的命令:

請試著組合命令。

這個 Django 應用程序是一個技術指南文檔,旨在為用戶輕鬆解釋 Linux 的各種命令。

`sudo` 執行命令。

請將上述選項組合在一起,與 AI 一同虛擬執行命令。

sudoers 文件设置 (使用 visudo)

`sudo` 权限由 `/etc/sudoers` 文件控制。应使用 `visudo` 命令安全地编辑此文件,而不是直接修改。`visudo` 会检查语法错误,以防止破坏 `sudo` 功能。

编辑 sudoers 文件

sudo visudo

以 root 权限安全地编辑 `sudoers` 文件。默认编辑器可能是 `vi`。

sudoers 文件的常见格式

`sudoers` 文件中的条目采用 `User Host=(RunAs) NOPASSWD: Command` 格式定义。最常见的设置是允许特定组的用户对所有命令具有 `sudo` 权限。

示例设置

以下是 `sudoers` 文件内常见的设置示例。

  • `%sudo ALL=(ALL:ALL) ALL`: 允许所有属于 `sudo` 组的用户在任何主机上(ALL)以所有用户(ALL)和组(ALL)的权限执行所有命令(ALL)。(需要密码)
  • `username ALL=(ALL) NOPASSWD: /usr/bin/apt update`: 允许 `username` 用户在不输入密码的情况下以 root 权限执行 `apt update` 命令。

使用示例

通过 `sudo` 命令的各种应用示例,学习如何以管理员权限执行系统操作。

系统软件包更新

sudo apt update

更新系统的软件包列表的命令需要管理员权限,因此使用 `sudo`。

复制文件到特定目录

sudo cp my_config.conf /etc/

将 `my_config.conf` 文件复制到通常没有写入权限的 `/etc/` 目录。

以其他用户身份执行命令

sudo -u www-data ls /var/www/html

以 `www-data` 用户(通常是 Web 服务器进程)的权限执行 `ls /var/www/html` 命令,测试该用户的文件访问权限。

切换到 root Shell

sudo -i

输入当前用户的密码以获取完全切换到 root 用户环境的 Shell。完成操作后,可以输入 `exit` 返回到原用户。

检查当前用户的 sudo 权限

sudo -l

检查当前登录用户通过 `sudo` 能执行哪些命令,以及是否需要密码等。


相同類別命令