sudo は「一般ユーザーが必要なときだけ root 権限でコマンドを実行する」ための仕組みです。
ただし sudo は “使い方を間違えると事故が起きる” コマンドでもあります(権限の付与ミス、NOPASSWD乱用、PATH汚染、タイムスタンプ放置など)。
本記事では、単なる構文説明だけでなく、sudoers の安全な設計・運用、そして よくあるエラーの切り分け まで「実務で困らないレベル」でまとめます。
📌 他のLinuxコマンドも体系的に確認したい方へ
ファイル操作・検索・テキスト処理など用途別に整理した総合まとめはこちら。
▶ Linuxコマンド大全|カテゴリ別まとめ+コマンド詳細リンク集(チートシート付き)
sudoの結論(先に要点)
- 普段は一般ユーザーで作業し、必要なコマンドだけ sudo で実行する。
- 権限付与は 最小権限(Least Privilege) が基本。
/etc/sudoersの編集は 必ずvisudo(構文ミス=詰み防止)。NOPASSWDは “便利” だが事故率が跳ねるので 用途限定 が原則。- sudoが遅い/失敗する時は、エラー別に原因が決まっている。
sudoとは?(rootで作業しない理由)
Linuxでは、rootで常用作業をすると「誤操作=即事故」になりやすく、監査面でも問題が起きます。
sudo は 必要な操作だけ一時的に権限昇格させ、日常作業は一般ユーザーで行うための仕組みです。
基本構文
sudo [オプション] コマンド
よくある例
# パッケージ操作(Debian/Ubuntu)
sudo apt update
# サービス再起動
sudo systemctl restart nginx
# rootしか読めないログ閲覧
sudo less /var/log/secure
主要オプション一覧(実務で使うものだけ厳選)
| オプション | 意味 | 実務での使いどころ | 例 |
|---|---|---|---|
-l | 許可されている sudo コマンド一覧表示 | 「自分は何ができる?」の確認 | sudo -l |
-u | 指定ユーザーとして実行 | サービスユーザーでの実行確認など | sudo -u www-data whoami |
-k | 認証キャッシュを破棄(次回必ずパスワード) | 作業終了後の安全確保 | sudo -k |
-v | 認証キャッシュ延長(パスワード再入力) | 長い作業前に認証更新 | sudo -v |
-i | rootのログインシェルへ | 環境も含めてrootで作業したい時(慎重に) | sudo -i |
-s | 現在の環境のままrootシェルへ | 環境変数の影響を受けやすいので注意 | sudo -s |
-b | バックグラウンド実行 | 長い処理を裏で回す | sudo -b apt update |
-e / sudoedit | 安全にファイル編集 | 設定ファイル編集の事故率を下げる | sudoedit /etc/hosts |
補足:sudo はタイムスタンプ(認証キャッシュ)を使って「一定時間はパスワード省略」できます。デフォルトは環境により差がありますが、sudoers の timestamp_timeout で制御可能です。
実務ユースケース集(“現場で使える”状態にする)
1) パッケージ管理
# Debian/Ubuntu
sudo apt update
sudo apt install -y curl
# RHEL/CentOS
sudo yum install -y curl
sudo dnf install -y curl

2) サービス操作(systemd)
sudo systemctl status nginx
sudo systemctl restart nginx
sudo journalctl -u nginx -xe

3) 設定ファイル編集(推奨は sudoedit)
# 推奨:sudoedit(編集は自分、保存だけroot)
sudoedit /etc/ssh/sshd_config
# 直接編集(事故が起きやすいので注意)
sudo vi /etc/ssh/sshd_config

4) root権限が必要なログ確認
sudo less /var/log/auth.log
sudo tail -n 200 /var/log/secure
5) “危険コマンド”の実行前チェック(事故防止)
# 削除対象が想定通りかを確認
ls -la /path/to/target
# 実行
sudo rm -rf /path/to/target
sudoers設計:安全に権限を配る方法
sudoの権限管理ファイル
| 対象 | 役割 | パス |
|---|---|---|
| メイン設定 | sudoの許可ルール本体 | /etc/sudoers |
| 分割設定 | ユーザー/用途ごとにルール分割(推奨) | /etc/sudoers.d/ |
重要:sudoersは必ずvisudoで編集
sudo visudo
直接編集すると、構文ミスで sudo が壊れて復旧が面倒(最悪ログイン不能)になるため、構文チェック付きの visudo が鉄則です。
sudoersの基本構文
ユーザー ホスト = (実行ユーザー) 許可コマンド
安全な設計テンプレ(おすすめ順)
テンプレ1:グループ運用(王道)
Ubuntu系は %sudo、RHEL系は %wheel が定番です(環境差はあります)。
# Ubuntu系(例)
%sudo ALL=(ALL:ALL) ALL
# RHEL/CentOS系(例)
%wheel ALL=(ALL) ALL

テンプレ2:特定コマンドだけ許可(最小権限)
「全部OK」ではなく、運用で必要なコマンドだけに絞ると事故率が下がります。
# 例:user1 に systemctl のみ許可
user1 ALL=(root) /usr/bin/systemctl
テンプレ3:NOPASSWDは“用途限定”で使う
NOPASSWD は便利ですが、誤実行や第三者操作のリスクが増えます。
どうしても必要なら「コマンド限定」「対象ユーザー限定」で。
# 例:CI用ユーザーに、限定コマンドだけパスワード不要
ciuser ALL=(root) NOPASSWD: /usr/bin/systemctl restart nginx, /usr/bin/systemctl status nginx
テンプレ4:/etc/sudoers.d に分割して管理(運用が強い)
# ファイル作成
sudo touch /etc/sudoers.d/ciuser
# visudoで安全に編集
sudo visudo -f /etc/sudoers.d/ciuser
セキュリティ・運用の落とし穴
1) 環境変数の引き継ぎ(env_reset / env_keep)
sudoers は環境変数を制御します。デフォルトでは env_reset が有効で「最小限の環境」でコマンドを実行する挙動が一般的です。
運用で “環境変数が必要” なケース(例:プロキシ、LANG、PATH など)があるため、env_keep を安易に増やしすぎない(=攻撃面が増える)点が重要です。

2) 認証キャッシュ(timestamp_timeout)
timestamp_timeout は「何分間パスワード不要にするか」を制御します。0にすると毎回パスワード、負値は再起動まで失効しない等の挙動があります。
3) 作業後はsudo -k(“やったつもり事故”防止)
sudo -k
共有端末・踏み台・長時間セッションで特に効果が大きいです。
よくあるエラー(症状別)
sudoのエラーは「症状ごとに原因がだいたい決まっている」ので、下記から該当へ進むのが最短です。
- 総合:
▶ 【完全版】sudoエラー大全|よくある原因と解決方法まとめ sudo: command not found:
▶ sudo: command not found が出るときの原因と対処user is not in the sudoers file(権限なし):
▶ ユーザーがsudoできない/権限がないときの確認方法- sudoが遅い/タイムアウトする:
▶ sudo実行でタイムアウトする/遅いときの原因と解決方法 sorry, you must have a tty to run sudo:
▶ sudo: sorry, you must have a tty to run sudo の原因と解決方法- sudoパスワードが通らない(PAM/設定/入力系):
▶ sudo実行時にパスワードが通らない no tty present and no askpass program specified:
▶ sudo: no tty present and no askpass program specified の対処unable to resolve host:
▶ sudo: unable to resolve host の原因と対処
FAQ
Q1. sudo と su の違いは?
sudo は「必要なコマンドだけ権限昇格」、su は「ユーザー(多くはroot)へ切り替え」です。
運用では “root常用を避ける” ために sudo が基本になります。
Q2. sudoでパスワードを毎回聞かれる/逆に聞かれないのはなぜ?
sudoは認証キャッシュを使います。
sudoers の timestamp_timeout や sudo -k(破棄)、sudo -v(更新)で挙動が変わります。
Q3. sudoersを直接編集してはいけない理由は?
構文ミスで sudo の解釈に失敗すると、sudoが使えなくなり復旧が面倒になります。
visudoは構文チェック+排他制御があるため安全です。
Q4. NOPASSWDは使っていい?
便利ですが、事故率が上がります。使うなら「ユーザー限定」「コマンド限定」が原則です。
例:CI用途の systemctl restart だけ、など。
Q5. sudoが遅い(固まる)ときの典型原因は?
DNS逆引きやhosts/hostname整合、sudoersのホスト指定などが典型です。詳しくは下記を参照。
▶ sudo実行でタイムアウトする/遅いときの原因と解決方法
まとめ(この記事でできるようになること)
- sudoの基本構文と主要オプションを “使えるレベル” で理解できる
- sudoers を 最小権限で設計し、運用事故を減らせる
- よくあるエラーを “症状別” に最短で解決できる
📌 sudoトラブルを一覧で引きたい方へ
sudo関連のエラーと解決方法をまとめて整理しています。
▶ 【完全版】sudoエラー大全|よくある原因と解決方法まとめ
