手当たり次第に書くんだ

飽きっぽいのは本能

Ubuntu 22.04 sudo パスワード確認の抑止 – NOPASSWD を安全に使う

この記事の位置づけ

sudo の NOPASSWD を扱う記事です。利便性だけでなく、どのユーザーにどこまで許可するかという運用上の責任分界として整理します。

Ubuntu 22.04 の関連記事

Ubuntu 22.04 では、管理ユーザーが sudo を使って root 権限のコマンドを実行します。標準では sudo 実行時にユーザー自身のパスワード入力が求められますが、サーバー運用や構成管理では、この確認を省略したい場面があります。

ただし、NOPASSWD は便利な一方で、扱い方を間違えると管理権限の境界を弱くします。この記事では、Ubuntu 22.04 で sudo のパスワード確認を抑止する方法を、/etc/sudoers.d/、限定許可、構文検証、確認手順に分けて説明します。

NOPASSWD: ALL は強い設定です。SSH 鍵認証、ログイン元制限、管理ユーザーの分離など、ログイン自体の制御ができている環境で使うのが前提です。必要なコマンドだけ許可できる場合は、全面許可より限定許可を優先します。

この記事で扱う内容は次の通りです。

  • sudo でパスワード確認が求められる理由
  • NOPASSWD を使う場面と注意点
  • /etc/sudoers.d/ に設定を分離する方法
  • 特定ユーザー、グループ、コマンド単位で許可する例
  • visudo -c による構文確認
対象 OSUbuntu 22.04
設定対象sudo / sudoers
設定配置先/etc/sudoers.d/
検証コマンドsudo visudo -c
主な用途管理ユーザー、構成管理、限定的な運用コマンドの実行
STEP 1sudo 権限を確認する
STEP 2/etc/sudoers.d/ に設定ファイルを作成する
STEP 3必要に応じて許可範囲を限定する
STEP 4visudo -c で構文を確認する
STEP 5新しいセッションで sudo -n を確認する
参考
書籍
参考書籍

Advanced Ubuntu Administration and Management Best Practices

Ubuntu Server の権限管理や運用項目を体系的に確認したい場合の参考書籍です。価格や在庫はリンク先で確認してください。

Amazon で見る

このリンクは Amazon アソシエイトリンクです。

sudo のパスワード確認が必要な理由

sudo のパスワード確認は、ログイン済みユーザーが本当に管理操作を行う意思を持っているかを再確認する仕組みです。端末を開いたまま離席した場合や、ログインセッションを第三者に操作された場合でも、すぐに root 権限の操作へ進めないようにする意味があります。

そのため、パスワード確認そのものは不要な手間ではありません。対話的に操作する端末では、むしろ残しておいた方が安全な場合もあります。

一方で、サーバー管理では、SSH 鍵認証、管理ネットワーク、構成管理、踏み台、監査ログなどでログイン経路を制御していることがあります。このような環境では、毎回の sudo パスワード確認よりも、ログイン前の認証と権限設計で守る方が現実的なことがあります。

現在の sudo 権限を確認する

まず、対象ユーザーがどのような sudo 権限を持っているか確認します。

コマンド
sudo -l

sudo -l は、現在のユーザーに許可されている sudo ルールを表示します。ここで既存の設定を確認してから変更します。

管理ユーザーの sudo パスワード確認を抑止する

特定の管理ユーザーに対して、すべてのコマンドをパスワードなしで実行できるようにする例です。ここでは管理ユーザーを myadmin としています。

設定ファイル例
sudo tee /etc/sudoers.d/90-myadmin-nopasswd >/dev/null <<'EOF'
myadmin ALL=(ALL:ALL) NOPASSWD: ALL
EOF
sudo chmod 440 /etc/sudoers.d/90-myadmin-nopasswd

/etc/sudoers を直接編集するのではなく、/etc/sudoers.d/ 配下に分離しておくと、設定単位で管理しやすくなります。

この例は myadmin に対して広い管理権限を与えます。個人用の検証環境や、ログイン経路を強く制御した管理サーバーでは扱いやすい一方、複数人がログインする環境では権限の分離を検討します。

管理グループに対して設定する

個別ユーザーではなく、管理用グループに対して NOPASSWD を設定することもできます。次の例では adminops グループに所属するユーザーを対象にしています。

コマンド
sudo groupadd --system adminops
sudo usermod -aG adminops myadmin
設定ファイル例
sudo tee /etc/sudoers.d/90-adminops-nopasswd >/dev/null <<'EOF'
%adminops ALL=(ALL:ALL) NOPASSWD: ALL
EOF
sudo chmod 440 /etc/sudoers.d/90-adminops-nopasswd

グループで管理すると、ユーザーごとに sudoers ファイルを増やさずに済みます。ただし、グループ所属がそのまま管理権限になるため、メンバー管理には注意します。

特定コマンドだけ許可する

すべてのコマンドを許可する必要がない場合は、対象コマンドを限定します。たとえば、サービスの状態確認や再起動だけを許可するような使い方です。

設定ファイル例
sudo tee /etc/sudoers.d/90-service-ops >/dev/null <<'EOF'
myadmin ALL=(root) NOPASSWD: /usr/bin/systemctl status nginx, /usr/bin/systemctl restart nginx
EOF
sudo chmod 440 /etc/sudoers.d/90-service-ops

限定許可は、運用作業を委任する場合に向いています。たとえばアプリケーション担当者に特定サービスの再起動だけ許可する、といった設計ができます。

コマンドを限定する場合は、実際に実行される絶対パスを確認します。Ubuntu 22.04 では command -v systemctl のように確認できます。
コマンド
command -v systemctl

構文を検証する

sudoers の構文を壊すと、sudo が使えなくなる可能性があります。設定を作成したら、必ず構文を確認します。

コマンド
sudo visudo -c

特定ファイルだけ確認したい場合は、-f を指定します。

コマンド
sudo visudo -cf /etc/sudoers.d/90-myadmin-nopasswd
visudo -c が正常終了してから、別の SSH セッションで sudo の動作を確認します。現在のセッションを閉じる前に確認しておくと、復旧不能な状態を避けやすくなります。

パスワードなし sudo を確認する

sudo -n を使うと、パスワード入力が必要な場合にプロンプトを出さず失敗します。パスワードなしで実行できるか確認する用途に向いています。

コマンド
sudo -n true
sudo -n id

対象ユーザーで新しく SSH 接続し、上記のコマンドが成功することを確認します。失敗する場合は、対象ユーザー名、グループ所属、sudoers のファイル名、構文、権限を確認します。

設定が反映されない場合の確認

設定が反映されない場合は、次の点を確認します。

  • /etc/sudoers.d/#includedir で読み込まれているか
  • ファイル名に .~ が含まれていないか
  • ファイル権限が 440 になっているか
  • 対象ユーザー名やグループ名が正しいか
  • 既存ルールと意図しない競合がないか
コマンド
sudo grep -n "includedir" /etc/sudoers
sudo ls -l /etc/sudoers.d/
sudo visudo -c
sudo -l

NOPASSWD を使う時の考え方

NOPASSWD は、パスワード入力をなくす設定であって、権限管理そのものを不要にする設定ではありません。ログイン認証、SSH 鍵、接続元制御、ユーザー分離、監査ログと組み合わせて考えます。

個人管理のサーバーや構成管理前提の環境では、管理ユーザーに NOPASSWD: ALL を与えることはあります。一方で、複数人が使う環境や作業委任の場面では、グループ単位、コマンド単位、用途別ユーザーで分ける方が安全です。

SSH 側の認証については、Ubuntu 22.04 SSH 公開鍵認証の設定Ubuntu 22.04 SSH サーバー設定 も合わせて確認すると、ログインから権限昇格までの流れを見通しやすくなります。

まとめ

Ubuntu 22.04 で sudo のパスワード確認を抑止する場合は、/etc/sudoers を直接編集するのではなく、/etc/sudoers.d/ に設定を分離します。設定後は visudo -c で構文を確認し、別セッションで sudo -n の動作を確認します。

NOPASSWD: ALL は強力ですが、常に最適とは限りません。サーバー全体を管理する専用ユーザーには全面許可、作業委任にはコマンド限定、というように用途に合わせて使い分けるのが現実的です。

次に読む記事
Ubuntu 22.04 sudo パスワード確認の抑止 – NOPASSWD を安全に使う

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

トップへ戻る