Sudoers 設定を理解する

LinuxBeginner
オンラインで実践に進む

はじめに

Linux では、root ユーザーがシステムに対する無制限の権限を持っています。しかし、日常の作業で root としてログインするのは危険です。そこで sudo を使用し、一般ユーザーが特定のコマンドを昇格した権限で実行できるようにします。

誰が sudo を使用でき、何を実行できるかを制御するファイルが /etc/sudoers です。このファイルは、委任する管理権限を定義するため、Linux システムで最も慎重に扱うべきポリシーファイルの一つです。

このファイルの管理には細心の注意が必要です。構文エラーが 1 つあるだけで、管理者を含むすべてのユーザーがシステムから締め出される可能性があります。そのため、標準的なテキストエディターでこのファイルを直接編集してはいけません。代わりに、visudo という専用ツールを使用します。

これは単なる利便性のための設定ではなく、ポリシーファイルです。誰が、どのような条件で、どのコマンドに対して管理権限を借りられるかを定義します。

この実験では、次の方法を学びます。

  1. visudo を使用して sudoers 設定を安全に確認する。
  2. ユーザーに管理権限を付与する。
  3. 付与した権限が正しく機能することを確認する。

現在の権限を確認する

変更を加える前に、現在の状態を確認します。この実験用に、alex という一般ユーザーを作成しています。デフォルトでは、新しく作成したユーザーに管理権限はありません。

Sudoers ファイルを確認する

設定を表示するには visudo を使用します。このツールはファイルをロックし、保存前に構文を検証するため、誤ってシステムから締め出されるのを防げます。

この検証機能が visudo の存在する理由です。通常のテキストエディターでは、小さな入力ミスがファイルの保存後に初めて発覚し、その時点ですでに sudo によるアクセスが壊れている可能性があります。

現在の設定を確認します。

sudo visudo

権限を持つユーザーを定義する行が表示されます。たとえば、次のような行です。

root    ALL=(ALL:ALL) ALL
%admin ALL=(ALL) ALL
%sudo   ALL=(ALL:ALL) ALL

この環境では、visudo によって nano エディターでファイルが開きます。何も変更せずに終了するには、Ctrl+X を押します。

アクセス権限がないことを確認する

次に、ユーザー alex に切り替えて、管理タスクを実行してみます。

まず、ユーザー alex に切り替えます。

su - alex

プロンプトが表示されたら password を入力します。

次に、アクセスが制限されている /root ディレクトリの内容を一覧表示してみます。

sudo ls /root

プロンプトが表示されたら password を入力します。

次のエラーが表示されることを確認します。

alex is not in the sudoers file.  This incident will be reported.

このメッセージから、alex が一般ユーザーであり、管理操作を実行できないことが確認できます。

これは安全なデフォルト設定です。Linux のセキュリティでは、最初は少ない権限だけを与え、必要な権限のみを追加することが 最小権限の原則 の一部となります。

最後に、元のユーザー(labex)へ戻ります。

exit

ユーザー権限を設定する

alex が root としてコマンドを実行できるようにするには、/etc/sudoers ファイルにルールを追加する必要があります。

まず、ファイルを安全に開きます。

sudo visudo

ファイルの末尾までスクロールするか、「User privilege specification」セクションを探し、次の行を追加します。

alex    ALL=(ALL:ALL) ALL

ルールの内訳:

  • alex:権限を付与するユーザー名です。
  • 最初の ALL:任意の Host からの接続にルールを適用します。
  • (ALL:ALL):任意の User(たとえば root)および任意の Group として、ユーザーがコマンドを実行できます。
  • 最後の ALL:ユーザーが Any Command を実行できます。

このルールは、学習目的で意図的に広い範囲を許可しています。実際のシステムでは、管理者はすべての操作を無制限に許可するのではなく、特定のコマンドだけを許可する、より限定的な sudo ルールを選ぶことが一般的です。

最後に、保存して終了します。

  • Ctrl+O を押し、続けて Enter を押して保存します。
  • Ctrl+X を押して終了します。

入力ミスがあった場合、visudo が警告を表示し、壊れた設定が保存されるのを防ぎます。

更新した権限を確認する

設定を更新したので、alex は完全な管理権限を持つはずです。実際に確認してみましょう。

まず、ユーザー alex に切り替えます。

su - alex

次に、先ほどと同じ特権コマンドを実行します。

sudo ls /root

プロンプトが表示されたら password を入力します。

結果を確認します。アクセス拒否のエラーが表示されず、/root ディレクトリの内容が表示されるはずです(通常は空であるか、いくつかの実装ファイルが含まれています)。

snap

これにより、ユーザー alex に対する権限の昇格が正常に設定されたことを確認できます。

この時点でも、alex がデフォルトで root になったわけではありません。alex には、sudo を通じて昇格した実行を要求する権限が委任されています。これは、通常の root ログインよりも安全で、監査もしやすい方法です。

最後に、alex のセッションを終了します。

exit

まとめ

この実験では、ユーザー権限を安全に管理する方法を学びました。

主なポイント:

  1. 安全性を最優先する:/etc/sudoers を編集するときは、必ず visudo を使用します。直接編集してはいけません。
  2. 権限を委任する:root のパスワードを共有せずに、特定のユーザーへ root 権限を付与できます。
  3. 検証する:新しい権限が意図したとおりに機能することを確認するため、必ずテストします。

sudoers の設定を習得すると、ユーザーに必要な権限だけを過不足なく付与した、安全なシステムを構築できるようになります。