DAY 04: 要塞の守護者

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

はじめに

LabEx Corporation の 4 日目へようこそ、要塞の守護者(Fortress Guardian)!昨日の「プロジェクト・フェニックス」における重大な問題解決という見事な調査活動を受け、最高技術責任者(CTO)はあなたをプロジェクト全体のセキュリティ責任者に指名しました。

「二度とセキュリティ事故を起こすわけにはいかない」と、CTO は午前のブリーフィングで語りました。「君の調査により、以前のセキュリティ設定が不十分だったことが判明した。Sarah Chen と開発チームがスケジュール通りにプロジェクト・フェニックスを完了させるためには、鉄壁の環境が必要だ。」

最近の危機は、強力なセキュリティ対策の必要性を浮き彫りにしました。開発を加速させるために新しいコントラクター(外部協力者)がチームに加わる予定であり、アクセス制御を完璧に設定しなければなりません。安全なファイルシステムの作成、正確な所有権の割り当て、きめ細かな権限設定、そして TechNova の知的財産を保護しつつ円滑に共同作業ができるワークスペースの構築が求められています。

プロジェクト・フェニックスの成功、そして会社の未来は、今日あなたが築くデジタル要塞にかかっています。システムを保護しましょう!

新しいプロジェクトのための安全なファイルの作成

最初のタスクは、機密性の高いプロジェクトキーを保存するファイルを作成することです。このファイルは厳重に機密保持され、所有者のみがアクセスできるようにする必要があります。

タスク

  • ~/project/phoenix_project ディレクトリ内に、project_keys.txt という名前の新しい空のファイルを作成してください。
  • このファイルの権限を設定し、所有者のみが読み取りと書き込みのアクセス権を持ち、他の誰も(同じグループのユーザーであっても)アクセスできないようにしてください。

要件

  • ファイル名は project_keys.txt とすること。
  • ファイルの場所は ~/project/phoenix_project/project_keys.txt とすること。
  • 権限の設定には、数値表記を用いた chmod コマンドを使用すること。

ヒント

  • touch コマンドを使用して空のファイルを作成できます。
  • 権限の数値を確認しましょう:読み取り (4)、書き込み (2)、実行 (1)。
  • 最終的な権限は 600(所有者に読み取り + 書き込み、グループとその他には権限なし)になるはずです。

タスク完了後、以下のような状態になっているはずです:

$ ls -l ~/project/phoenix_project/
-rw------- 1 labex labex 0 Sep 3 16:03 project_keys.txt

ファイルの権限 -rw------- は以下を示します:

  • 所有者は読み取りと書き込みの権限を持つ
  • グループは権限を持たない
  • その他は権限を持たない
✨ 解答を確認して練習

プロジェクトリソースの所有権の割り当て

プロジェクト・フェニックスは Sarah Chen の開発チームが主導しており、テクニカルリードの dev_lead がコア開発作業を管理しています。このユーザーは、あなたが今週ずっと関わってきた developers グループに属しています。適切なアクセス制御を確保するために、すべてのプロジェクトファイルとディレクトリの所有権を移譲する必要があります。

タスク

  • ~/project/phoenix_project ディレクトリとそのすべての内容の所有者を、ユーザー dev_lead に変更してください。
  • ~/project/phoenix_project ディレクトリとそのすべての内容のグループ所有者を、developers グループに変更してください。

要件

  • ユーザー所有者は dev_lead であること。
  • グループ所有者は developers であること。
  • 所有権の変更は、~/project/phoenix_project 内のすべてのファイルとサブディレクトリに再帰的(recursive)に適用すること。
  • chown コマンドを使用すること。

ヒント

  • chown コマンドは、user:group という構文を使用して、ユーザーとグループを同時に変更できます。
  • ファイルやディレクトリに対して再帰的に操作を行うための chown コマンドのオプションを探してください。man chown コマンドが役立ちます。
  • 現在、ファイルは root によって所有されているため、所有権を変更するには sudo を使用する必要があります。

タスク完了後、以下のような状態になっているはずです:

$ ls -ld ~/project/phoenix_project/
drwxrwxr-x 4 dev_lead developers 53 Sep 3 16:00 ~/project/phoenix_project/

$ ls -l ~/project/phoenix_project/
total 0
drwxrwxr-x 2 dev_lead developers 27 Sep 3 16:00 docs
-rw------- 1 dev_lead developers 0 Sep 3 16:03 project_keys.txt
drwxrwxr-x 2 dev_lead developers 6 Sep 3 16:00 src

すべてのファイルとディレクトリの所有者は以下のようになります:

  • ユーザー: dev_lead
  • グループ:developers
✨ 解答を確認して練習

メインプロジェクトディレクトリの保護

所有権が正しく設定されたので、メインプロジェクトディレクトリ ~/project/phoenix_project の基本権限を設定する必要があります。ポリシーは次の通りです:所有者はフルコントロールを持ち、グループはファイルのリスト表示とディレクトリへの移動が可能で、部外者は一切アクセスできないようにします。

タスク

  • ~/project/phoenix_project ディレクトリの権限を設定してください。

要件

  • 所有者 (dev_lead) は、読み取り、書き込み、実行の権限を持つこと。
  • グループ (developers) は、読み取りと実行の権限を持つこと。
  • その他は、権限を持たないこと。
  • chmod コマンドを使用して、~/project/phoenix_project ディレクトリ自体にこれらの権限を適用すること(再帰的ではない)。
  • ディレクトリは dev_lead が所有しているため、権限を変更するには sudo が必要な場合があります。

ヒント

  • ディレクトリに対する「実行」権限は、そのディレクトリに cd で入ることを許可します。
  • 所有者、グループ、その他の数値権限値を計算しましょう。
  • 所有者 (rwx) = 4+2+1 = 7
  • グループ (r-x) = 4+0+1 = 5
  • その他 (---) = 0+0+0 = 0

タスク完了後、以下のような状態になっているはずです:

$ ls -ld ~/project/phoenix_project/
drwxr-x--- 4 dev_lead developers 53 Sep 3 16:00 ~/project/phoenix_project/

ディレクトリの権限 drwxr-x--- は以下を示します:

  • 所有者 (dev_lead) は読み取り、書き込み、実行の権限を持つ
  • グループ (developers) は読み取りと実行の権限を持つ
  • その他は権限を持たない

これは以下のことを意味します:

  • dev_lead はディレクトリにフルアクセスできる
  • developers グループのメンバーは内容を表示し、ディレクトリに入ることができる
  • 部外者はディレクトリにアクセスできない
✨ 解答を確認して練習

開発チームのための共同作業用権限の設定

注意:最初にステップ 2 を完了し、src を含むすべてのプロジェクトディレクトリの所有権が dev_lead:developers に設定されていることを確認してください。このステップは、それらの所有権設定に基づいています。

開発チームは ~/project/phoenix_project/src ディレクトリ内で効果的に共同作業を行う必要があります。円滑なコラボレーションを実現するために、src 内に作成される新しいファイルやディレクトリは、作成したユーザーのプライマリグループではなく、自動的に developers グループに属するようにする必要があります。

タスク

  • ~/project/phoenix_project/src ディレクトリに特殊な権限を設定し、その中に作成されるすべての新しいファイルとサブディレクトリが、src ディレクトリ自体のグループ所有権(developers)を継承するようにしてください。

要件

  • ~/project/phoenix_project/src 内の新しいファイルが自動的に developers グループによって所有されるようにすること。
  • この特殊な権限を設定するために chmod コマンドを使用すること。
  • 他のユーザーが所有するディレクトリに権限を設定するため、sudo が必要な場合があります。

ヒント

  • この特殊な権限は「セットグループ ID」または setgid ビットと呼ばれます。
  • setgid ビットは、シンボル表記 (g+s) または数値表記のいずれかを使用して適用できます。
  • 数値表記では、setgid ビットの値は 2 です。これは、標準の 3 桁の権限数字の前に配置されます(例:2770)。

タスク完了後、以下のような状態になっているはずです:

$ ls -ld ~/project/phoenix_project/src/
drwxrws--- 2 dev_lead developers 6 Sep 3 16:00 ~/project/phoenix_project/src/

グループの実行権限の位置にある s は、setgid ビットが設定されており、グループに実行権限があることを示しています。新しいファイルを作成すると:

$ touch ~/project/phoenix_project/src/new_file.txt
$ ls -l ~/project/phoenix_project/src/new_file.txt
-rw-rw---- 1 dev_lead developers 0 Sep 3 16:05 new_file.txt

別のユーザーとしてログインしていても、新しいファイルが自動的に developers グループに属していることに注目してください。これにより、適切なグループ所有権を維持しながら、開発チーム内での共同作業が保証されます。

権限の表示:

  • 所有者 (dev_lead) は読み取りと書き込みの権限を持つ
  • グループ (developers) は読み取りと書き込みの権限を持つ
  • その他は権限を持たない
  • グループの実行権限位置にある小文字の s は、setgid ビットが設定され、グループに実行権限があることを示す
✨ 解答を確認して練習

まとめ

素晴らしい仕事です、要塞の守護者!あなたはプロジェクト・フェニックスのために、難攻不落のセキュリティ基盤を構築することに成功しました。CTO と Sarah Chen は、あなたの包括的なセキュリティ実装に驚いています。プロジェクトディレクトリは今や、TechNova の知的財産を保護しつつ、シームレスなコラボレーションを可能にする要塞となりました。

このチャレンジを通じて、あなたは重要な Linux セキュリティスキルを習得しました:

  • ファイルの作成と基本権限: 精密な権限制御により、機密性の高いプロジェクトキーを保護しました。
  • 所有権の管理: Sarah の開発チームとテクニカルリーダーシップに、専門的な知識を持って所有権を割り当てました。
  • ディレクトリのセキュリティ: メインプロジェクトのインフラにおいて、アクセス性とセキュリティのバランスを調整しました。
  • 高度な権限設定: setgid 権限を構成し、グループ所有権が自動的に継承される共同作業用ワークスペースを実現しました。
  • 共同作業用ワークスペース: 生産性を維持しつつセキュリティを確保するチームコラボレーションスペースを構築しました。

これらの高度なセキュリティスキルは、あなたがシニアシステム管理者の責任を担う準備ができていることを証明しました。明日は「鍵の番人(Keeper of the Keys)」として最後のチャレンジに挑みます。システムへのユーザーアクセスを制御し、プロジェクト・フェニックスのセキュリティにおける「人的要素」を管理しましょう!