Linux 特権の付与

LinuxLinuxBeginner
今すぐ練習

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

Linux システムにおいて、ユーザーの権限管理とアクセス制御は、システム管理とセキュリティの基本的な要素です。sudo コマンドは "superuser do" の略で、承認されたユーザーが通常はスーパーユーザーまたはルートアカウントのような高い権限でコマンドを実行できるようにします。

この実験では、Linux 環境においてユーザーに権限を付与し、制限するプロセスを案内します。ユーザーを sudo グループに追加して管理タスクを実行できるようにする方法や、特定のコマンドに対する権限を制限する方法を学びます。これらのスキルは、機密性の高い操作へのアクセスを慎重に管理する必要があるセキュアなシステムを維持するために不可欠です。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) linux(("Linux")) -.-> linux/UserandGroupManagementGroup(["User and Group Management"]) linux/BasicFileOperationsGroup -.-> linux/cp("File Copying") linux/BasicFileOperationsGroup -.-> linux/mv("File Moving/Renaming") linux/BasicFileOperationsGroup -.-> linux/rm("File Removing") linux/UserandGroupManagementGroup -.-> linux/useradd("User Adding") linux/UserandGroupManagementGroup -.-> linux/usermod("User Modifying") linux/UserandGroupManagementGroup -.-> linux/sudo("Privilege Granting") linux/UserandGroupManagementGroup -.-> linux/groups("Group Displaying") subgraph Lab Skills linux/cp -.-> lab-271393{{"Linux 特権の付与"}} linux/mv -.-> lab-271393{{"Linux 特権の付与"}} linux/rm -.-> lab-271393{{"Linux 特権の付与"}} linux/useradd -.-> lab-271393{{"Linux 特権の付与"}} linux/usermod -.-> lab-271393{{"Linux 特権の付与"}} linux/sudo -.-> lab-271393{{"Linux 特権の付与"}} linux/groups -.-> lab-271393{{"Linux 特権の付与"}} end

ユーザー管理と sudo の基本を理解する

このステップでは、Linux のユーザー管理と sudo コマンドの基本について学びます。新しいユーザーを作成し、そのユーザーに管理権限を付与する方法を理解します。

sudo とは何ですか?

sudo コマンドは、承認されたユーザーが他のユーザー、通常はスーパーユーザー(root)のセキュリティ権限でコマンドを実行できるようにします。これにより、root ユーザーとしてログインすることなく管理タスクを実行する方法が提供され、これはセキュリティ上のベストプラクティスとされています。

新しいユーザーの作成

まず、新しいユーザーアカウントを作成しましょう。ターミナルを開き、次のコマンドを実行します。

sudo adduser trusted_advisor

新しいユーザーのパスワードといくつかのオプション情報を入力するように求められます。この実験では、password123 のような簡単なパスワードを設定し、他のフィールドは Enter キーを押して空白のままにしておくことができます。

出力は次のようになるはずです。

Adding user `trusted_advisor' ...
Adding new group `trusted_advisor' (1001) ...
Adding new user `trusted_advisor' (1001) with group `trusted_advisor' ...
Creating home directory `/home/trusted_advisor' ...
Copying files from `/etc/skel' ...
New password:
Retype new password:
passwd: password updated successfully
Changing the user information for trusted_advisor
Enter the new value, or press ENTER for the default
	Full Name []:
	Room Number []:
	Work Phone []:
	Home Phone []:
	Other []:
Is the information correct? [Y/n] Y

ユーザー情報の確認

ユーザーが正常に作成されたことを確認するには、/etc/passwd ファイルの内容を調べることができます。

grep trusted_advisor /etc/passwd

これにより、ユーザー情報を含む行が表示されるはずです。

sudo 権限の付与

ユーザーに sudo 権限を付与するには、そのユーザーを sudo グループに追加する必要があります。Ubuntu では、sudo グループのメンバーは sudo コマンドを使用できます。次のコマンドを実行します。

sudo usermod -aG sudo trusted_advisor

このコマンドは、ユーザー trusted_advisor を sudo グループ (-G sudo) に追加 (-a) します。これで、ユーザーは管理権限でコマンドを実行できるようになります。

sudo アクセスの確認

新しいユーザーが sudo アクセスを持っていることを確認するには、そのユーザーアカウントに切り替えて、通常は root ユーザーのみがアクセスできる /root ディレクトリの内容を表示してみましょう。

su - trusted_advisor

求められたら、このユーザーに設定したパスワードを入力します。次に、次のコマンドを実行します。

sudo ls /root

再度パスワードを求められます(初回の sudo 使用時)。パスワードを入力した後、/root ディレクトリの内容が表示されるはずで、これによりユーザーが sudo 権限を持っていることが確認できます。

最後に、trusted_advisor ユーザーのセッションを終了して、元のユーザーに戻ります。

exit

sudoers ファイルで sudo アクセスを制限する

このステップでは、sudoers ファイルを使用して、ユーザーの sudo 権限を特定のコマンドに制限する方法を学びます。これは最小特権の原則を実装するもので、ユーザーはタスクを実行するために必要な最小限の特権のみを持つべきであるという原則です。

sudoers ファイルの理解

/etc/sudoers ファイルは、誰が sudo コマンドを使用できるか、およびどのコマンドを実行できるかを制御します。このファイルは、通常のテキストエディタで直接編集しないでください。構文エラーがあるとシステムからロックアウトされる可能性があります。代わりに、常に visudo コマンドを使用してください。このコマンドは保存前に構文エラーをチェックします。

sudoers ファイルの編集

sudoers ファイルを安全に編集するには、visudo コマンドを使用します。

sudo visudo

これにより、sudoers ファイルがデフォルトのエディタ(通常は nano または vi)で開きます。

sudoers 構文の理解

sudoers ファイルの sudo エントリの基本構文は次の通りです。

user_or_group    host=(run_as_user:run_as_group)    NOPASSWD: commands

ここで:

  • user_or_group:このルールが適用されるユーザーまたはグループ
  • host:このルールが適用されるホスト名(通常は ALL)
  • run_as_user:コマンドが実行されるユーザー(通常は ALL、つまり root)
  • run_as_group:コマンドが実行されるグループ(省略可能)
  • NOPASSWD:パスワードを入力せずにコマンドを実行できるオプションのタグ
  • commands:sudo で実行できる特定のコマンド

制限付き sudo アクセスの追加

ファイルの末尾までスクロールし、次の行を追加して、trusted_advisor にパスワードなしで cpmv コマンドのみを実行する権限を付与します。

trusted_advisor ALL=(ALL) NOPASSWD: /bin/cp, /bin/mv

nano でファイルを保存するには、Ctrl+O を押してから Enter を押し、終了するには Ctrl+X を押します。

制限付き sudo アクセスのテスト

では、制限付き sudo アクセスが期待通りに機能するかテストしましょう。まず、現在のディレクトリにテストファイルを作成します。

echo "This is a test file" > important_file.txt

次に、trusted_advisor ユーザーに切り替えます。

su - trusted_advisor

求められたらパスワードを入力します。

ファイルをルートディレクトリにコピーしてみましょう。これは許可されているはずです。

sudo cp /home/labex/project/important_file.txt /root/

これはパスワードを求めずに成功するはずです。

次に、許可されたリストにないコマンド、たとえば cat を実行してみましょう。

sudo cat /root/important_file.txt

cat は許可されたコマンドのリストにないため、許可が拒否されるエラーが表示されるはずです。

最後に、ファイルがルートディレクトリにコピーされたことを確認します。

sudo ls /root/

出力に important_file.txt が表示されるはずです。

trusted_advisor ユーザーのセッションを終了します。

exit

テストファイルの削除

後片付けとして、テストファイルを削除します。

sudo rm important_file.txt

sudo ログとセキュリティに関する考慮事項の理解

このステップでは、sudo のログ記録とセキュリティのベストプラクティスについて学びます。sudo の使用状況を監視することは、セキュリティと監査の目的で重要です。

sudo のログ記録

ユーザーが sudo でコマンドを実行すると、それらのアクションがログに記録されます。これにより、セキュリティ監視やトラブルシューティングに役立つ監査証跡が提供されます。

Ubuntu では、sudo のログは通常、/var/log/auth.log のシステム認証ログに保存されます。最近の sudo アクティビティを調べてみましょう。

sudo grep sudo /var/log/auth.log | tail -n 10

このコマンドは、sudo に関連する最後の 10 件のログエントリを表示します。出力には、タイムスタンプ、ユーザー名、および sudo で実行されたコマンドが含まれるはずです。

sudo のセキュリティベストプラクティス

sudo 権限を管理するためのいくつかのベストプラクティスを以下に示します。

  1. 最小特権の原則:ユーザーはタスクを実行するために必要な最小限の特権のみを持つべきです。
  2. 特定のコマンドを使用する:完全な sudo アクセスを付与する代わりに、ユーザーが実行できるコマンドを正確に指定します。
  3. パスワード要件を設定する:機密性の高い操作については、ユーザーが sudo を使用する際にパスワードを入力する必要があることを確認します。
  4. 定期的な監査:定期的に sudo ログと sudoers ファイルを確認し、適切な設定が行われていることを確認します。
  5. 不要なアクセスを削除する:ユーザーが昇格した特権を必要としなくなったら、すぐに sudo グループから削除します。

sudo アクセスの削除

ユーザーがもはや sudo 権限を必要としない場合、sudo グループから削除することができます。

sudo deluser trusted_advisor sudo

ユーザーがもはや sudo グループに属していないことを確認します。

groups trusted_advisor

出力のグループリストに "sudo" が含まれなくなっているはずです。

取り消された sudo アクセスのテスト

ユーザーがもはや sudo でコマンドを実行できないことを確認しましょう。

su - trusted_advisor

求められたらパスワードを入力します。

sudo でコマンドを実行してみましょう。

sudo ls /root

これで、許可が拒否されるエラーが表示されるはずです。

trusted_advisor ユーザーのセッションを終了します。

exit

sudo アクセスの再付与

この実験の目的で、ユーザーを再度 sudo グループに追加しましょう。

sudo usermod -aG sudo trusted_advisor

ユーザーが再度 sudo グループに属していることを確認します。

groups trusted_advisor

出力のグループリストに "sudo" が含まれるはずです。

まとめ

この実験では、重要な Linux ユーザー管理と特権制御の技術を学びました。以下の概念と操作に関する実践的な経験を積みました。

  1. ユーザーの作成adduser コマンドを使用して新しいユーザーアカウントを作成する方法を学びました。
  2. sudo 特権の付与:ユーザーを sudo グループに追加することで、ユーザーに管理者機能を付与する方法を学びました。
  3. sudo アクセスの制限:sudoers ファイルを使用して、ユーザーの sudo アクセスを特定のコマンドに制限することで、最小特権の原則を実践しました。
  4. sudo のログ記録と監視:sudo のアクティビティがどのようにログに記録されるか、およびセキュリティ上の理由からこれらのログを監視する重要性を調べました。
  5. sudo アクセスの管理:必要に応じてユーザーから sudo 特権を追加および削除する方法を学びました。

これらのスキルは、Linux システム管理とセキュリティにとって基本的なものです。ユーザー特権を適切に管理することで、ユーザーが必要なリソースにアクセスできる一方で、システムの整合性やセキュリティを損なうことなく、安全なシステムを維持することができます。