Linux sudo コマンド
sudo は Super User DO の略で、許可されたユーザーが他のユーザー(通常は root ユーザー)の権限でコマンドを実行できるようにします。つまり、sudo で実行されたコマンドは、あたかも root 自身が実行したかのように動作します。
使用権限: /etc/sudoers に記載されているユーザー。
構文
sudo [选项] 命令
例:
sudo apt update # 以 root 权限更新软件包列表 sudo vim /etc/hosts # 编辑需要 root 权限的文件
パラメータの説明:
- -i: 初期ログインをシミュレートし、対象ユーザーの環境を読み込みます
- -s: シェルを実行します
- -uuser: 指定したユーザーとして実行します
- -l: 現在のユーザーが実行可能な sudo コマンドを一覧表示します
- -v: ユーザー認証情報を検証します(sudo セッションを延長)
- -k: sudo の認証情報キャッシュを取り消します
例
root 権限で単一のコマンドを実行:
sudo apt update sudo systemctl restart nginx sudo mkdir /opt/myapp
root ユーザーのシェルに切り替え:
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 と sudo の違い
| 特徴 | su | sudo |
|---|---|---|
| 必要なパスワード | 対象ユーザーのパスワード | 現在のユーザーのパスワード |
| セッションの持続 | 手動で exit するまで | 単一コマンドまたは短時間のキャッシュ |
| 設定の複雑さ | 簡単 | sudoers の設定が必要 |
| セキュリティ | root パスワードを知っている必要がある | より細かい権限制御 |
| 監査 | 限定的 | より詳細なログ |
su コマンドはシンプルで直接的ですが、現代のシステム管理においては、sudo の方がより高いセキュリティと監査機能を提供するため、通常は sudo が推奨されます。
その他の拡張
Linux コマンド大全