はじめに
Linux におけるユーザーID 管理とアクセス制御の実験へようこそ。適切なユーザーおよびアクセス管理は、システムセキュリティと管理の基盤です。これにより、ユーザーは自身の役割に必要なリソースにのみアクセスでき、不正な操作や潜在的なセキュリティ侵害を防ぐことができます。
この実験では、ユーザー、グループ、権限を管理するための必須コマンドラインツールの実践的な経験を積みます。ユーザーアカウントの作成、グループメンバーシップの管理、chmod および chown を使用したファイルアクセスの制御、そして sudo を使用した特定管理権限の付与方法を学びます。この実験の終わりには、Linux 環境を保護するための確固たる基盤を築くことができるでしょう。
ユーザーアカウントとグループの作成・管理
このステップでは、Linux システム管理者にとって基本的なタスクであるユーザーアカウントとグループの作成および管理方法を学びます。新しいユーザー、新しいグループを作成し、そのユーザーをそのグループに追加します。
まず、alice という名前の新しいユーザーを作成しましょう。ここでは、システムにユーザーのホームディレクトリを作成するように指示する -m オプション付きの useradd コマンドを使用します。
sudo useradd -m alice
次に、すべてのユーザーアカウントにはパスワードが必要です。passwd コマンドを使用して alice のパスワードを設定します。新しいパスワードを入力して確認するように求められます。
sudo passwd alice
この実験では、password のような簡単なパスワードを入力できます。パスワードを 2 回同じように入力してください。一致しない場合はエラーが表示され、再試行する必要があります。
ユーザー alice が作成されたことを確認するには、すべてのユーザーアカウントに関する情報が含まれる /etc/passwd ファイルを確認できます。
grep alice /etc/passwd
alice ユーザーの詳細を含む出力行が表示されるはずです。
alice:x:5001:5001::/home/alice:/bin/sh
次に、developers という名前の新しいグループを作成しましょう。これには groupadd コマンドを使用します。
sudo groupadd developers
グループ作成を確認するには、/etc/group ファイルを確認できます。
grep developers /etc/group
出力には新しいグループが表示されるはずです。
developers:x:5003:
最後に、新しいユーザー alice を developers グループに追加しましょう。ここでは -aG オプション付きの usermod コマンドを使用します。-a は append(追加)を意味し、-G はグループを指定します。ユーザーが所属している可能性のある他のグループから削除しないように、-a を使用することが重要です。
sudo usermod -aG developers alice
alice が developers グループのメンバーになったことを確認するには、groups コマンドを使用します。
groups alice
出力には alice が所属するすべてのグループが表示され、これには developers が含まれるはずです。
alice : alice developers
ファイルとディレクトリのパーミッション設定 (chmod, chown)
このステップでは、chmod および chown コマンドを使用してファイルとディレクトリの権限を管理する方法を学びます。これらは、システム上のファイルに対する読み取り、書き込み、または実行権限を制御するために不可欠です。ここでは、~/project/reports/quarterly.txt にあるファイルを使用します。
まず、ls -l コマンドを使用して、ファイルの現在の所有権と権限を確認しましょう。
ls -l reports/quarterly.txt
出力は以下のようになり、ファイルが labex ユーザーとグループによって所有されていることが示されます。
-rw-rw-r-- 1 labex labex 20 Aug 5 10:34 reports/quarterly.txt
次に、このファイルの所有権を変更しましょう。ユーザー alice を所有者とし、developers グループをグループ所有者とします。これには chown コマンドを使用します。構文は chown ユーザー:グループ ファイル名 です。
sudo chown alice:developers reports/quarterly.txt
ls -l を再度実行して変更を確認しましょう。
ls -l reports/quarterly.txt
出力には新しい所有者とグループが表示されます。
-rw-rw-r-- 1 alice developers 20 Aug 5 10:34 reports/quarterly.txt
次に、chmod コマンドを使用してファイルの権限を変更します。権限を次のように設定します。
- 所有者 (
alice) は読み取りと書き込み権限 (rw-) を持つ。 - グループ (
developers) は読み取り専用権限 (r--) を持つ。 - その他は一切の権限を持たない (
---)。
8 進数(数値)表記では、読み取りは 4、書き込みは 2、実行は 1 です。したがって、rw- は 4+2=6、r-- は 4、--- は 0 となります。これにより、権限コード 640 が得られます。
これらの権限を適用しましょう。
sudo chmod 640 reports/quarterly.txt
最後に、権限が正しく設定されていることを確認するために、もう一度権限を確認しましょう。
ls -l reports/quarterly.txt
出力には新しい権限 -rw-r----- が反映されているはずです。
-rw-r----- 1 alice developers 20 Aug 5 10:34 reports/quarterly.txt
特権アクセス管理のための Sudo の実装
このステップでは、sudo を使用してユーザーに特権アクセスを付与する方法を学びます。完全な root アクセスを与えるのではなく、sudo はユーザーが昇格された権限で実行できるコマンドを細かく制御できます。これははるかに安全なプラクティスです。
sudo の設定は /etc/sudoers ファイルに保存されます。このファイルを編集する最も安全な方法は、visudo コマンドを使用することです。これによりファイルがロックされ、保存前に構文エラーがチェックされます。
ユーザー alice に、パスワードを入力せずに apt update コマンドを実行する権限を与えましょう。
編集のために sudoers ファイルを開きます。
sudo EDITOR=nano visudo
これにより、ファイルがテキストエディタ(nano など)で開かれます。ファイルの末尾までスクロールし、次の行を追加します。
alice ALL=(ALL) NOPASSWD: /usr/bin/apt update
この行は、「ユーザー alice は ALL ホストで、指定されたコマンド /usr/bin/apt update に対して、パスワードなしで (NOPASSWD:)、ALL ユーザーとして ((ALL)) コマンドを実行できる」という意味です。
行を追加したら、エディタを保存して終了します。nano では、Ctrl+O を押してファイル名を確定するために Enter を押し、Ctrl+X を押して終了します。
次に、新しいルールをテストしましょう。alice ユーザーアカウントに切り替える必要があります。
sudo su - alice
コマンドプロンプトが変わり、alice としてログインしていることが示されます。次に、許可されたコマンドを実行してみてください。
sudo /usr/bin/apt update
コマンドはパスワードを尋ねられることなく正常に実行されるはずです。パッケージリストが更新されているのが表示されます。
次に、alice が sudo で実行することを許可されていないコマンド、例えば apt upgrade を実行してみましょう。
sudo /usr/bin/apt upgrade
このコマンドは失敗し、[sudo] password for alice: というメッセージが表示され、ユーザー alice がこのコマンドを実行することを許可されていないことが示されます。
[sudo] password for alice:
Ctrl+C を押してコマンドを終了します。
これにより、sudo ルールが期待どおりに機能していることが確認できます。次に、元の labex ユーザーに戻りましょう。
exit
特権アクセスアクティビティのための Sudo ログのレビュー
このステップでは、特権アクセスを監視するためにシステムログを確認する方法を学びます。sudo の使用状況を監査することは、誰がいつ root としてコマンドを実行しているかを追跡するための重要なセキュリティプラクティスです。
Debian ベースのシステム(Ubuntu など)では、sudo コマンドは /var/log/auth.log ファイルに記録されます。このファイルは保護されているため、読み取るには sudo を使用する必要があります。
grep コマンドを使用してログをフィルタリングし、前のステップでユーザー alice によって実行された sudo コマンドに関連するエントリを見つけることができます。
次のコマンドを実行して、認証ログを検索します。
sudo grep 'sudo.*alice' /var/log/auth.log
出力にはいくつかの行が表示されます。成功した sudo の試行と失敗した sudo の試行の両方に関するログを特定できるはずです。
成功した試行はこれに似ており、実行されたコマンドが表示されます。
... labex-vm sudo: alice : TTY=pts/0 ; PWD=/home/alice ; USER=root ; COMMAND=/usr/bin/apt update
失敗した試行も記録され、コマンドが許可されなかったことが明確に示されます。
... labex-vm sudo: alice : user NOT allowed to execute /usr/bin/apt upgrade on labex-vm ; TTY=pts/0 ; PWD=/home/alice ; USER=root ; COMMAND=/usr/bin/apt upgrade
これらのログを確認することで、管理者は不審なアクティビティを監視し、特権コマンドが適切に使用されていることを確認できます。
まとめ
実験は完了しました!
この実験では、Linux のユーザーおよびアクセス管理に関する基本的なタスクを実践的に体験しました。これらのスキルは、安全で整理された Linux システムを維持するための基本となります。
以下の方法を学びました。
useraddおよびgroupaddを使用した新しいユーザーとグループの作成。chownを使用したファイルの所有権の変更、およびchmodを使用したパーミッションの変更。sudoおよびvisudoコマンドを使用した、きめ細やかな特権アクセスの実装。/var/log/auth.logのシステムログを確認することによるsudoアクティビティの監査。
これらのコマンドを習得することで、Linux サーバー上のユーザーを管理し、機密データを保護する能力が向上しました。



