DAY 04: 要塞の守護者

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

はじめに

LabEx Corporationでの4日目へようこそ、要塞の守護者よ!昨日、Project Phoenixの重大な問題を解決したあなたの素晴らしい調査能力を受けて、最高技術責任者(CTO)はプロジェクト全体のセキュリティを指揮する責任者にあなたを任命しました。

「これ以上のセキュリティインシデントは許されない」と、CTOは朝のブリーフィングで説明しました。「君の調査により、以前のセキュリティ設定が不十分であったことが明らかになった。サラ・チェンと開発チームが予定通りにProject Phoenixを完了させるためには、鉄壁の環境が必要だ。」

最近の危機は、強固なセキュリティ対策の必要性を浮き彫りにしました。開発を加速させるために新しい契約社員がチームに加わることになり、あなたはアクセス制御が完璧に構成されていることを保証しなければなりません。安全なファイルシステムの作成、適切な所有権の割り当て、きめ細かな権限設定、そしてTechNovaの知的財産を保護する共同作業スペースの構築が求められています。

Project Phoenixの成功、そして会社の未来は、今日あなたが築くデジタル要塞にかかっています。さあ、システムを保護しましょう!

新規プロジェクト用の安全なファイルの作成

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

タスク

  • ~/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------- となっており、以下を示しています:

  • 所有者は読み取りおよび書き込み権限を持つ
  • グループは権限を持たない
  • その他は権限を持たない

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

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

タスク

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

要件

  • ユーザー所有者は dev_lead であること。
  • グループ所有者は developers であること。
  • 所有権の変更は、~/project/phoenix_project 内のすべてのファイルとサブディレクトリに再帰的に適用されること。
  • 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 グループに属するようにする必要があります。この特別な権限はグループ所有者にのみ影響します。ユーザー所有者は引き続きファイルを作成したアカウントとなり、ファイルの読み取り/書き込み権限は引き続きそのユーザーの umask に依存します。

タスク

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

要件

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

ヒント

  • この特別な権限は「set group 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-r-- 1 labex developers 0 Apr 15 18:28 /home/labex/project/phoenix_project/src/new_file.txt

新しいファイルが、別のユーザーとしてログインしていても自動的に developers グループに属していることに注目してください。ファイルの所有者はファイルを作成したユーザーのままですが、グループ所有者は src ディレクトリから継承されます。これにより、適切なグループ所有権を維持しながら、開発チーム内での共同作業が可能になります。

権限は以下を示しています:

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

まとめ

素晴らしい仕事です、要塞の守護者よ!あなたはProject Phoenixのために、侵入不可能なセキュリティ基盤を構築することに成功しました。CTOとサラ・チェンは、あなたの包括的なセキュリティ実装に驚嘆しています。プロジェクトディレクトリは今や、TechNovaの知的財産を保護しつつ、円滑な共同作業を可能にする要塞となりました。

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

  • ファイルの作成と基本権限: 精密な権限制御で機密プロジェクトキーを保護しました。
  • 所有権の管理: サラの開発チームとテクニカルリードに所有権を適切に割り当てました。
  • ディレクトリのセキュリティ: メインプロジェクトインフラストラクチャのアクセスとセキュリティのバランスを整えました。
  • 高度な権限: setgid 権限を構成し、グループ所有権の自動継承を伴う共同作業ワークスペースを実現しました。
  • 共同作業ワークスペース: セキュリティを維持しながら生産性を高めるチーム共同作業スペースを構成しました。

これらの高度なセキュリティスキルは、あなたがシニアシステム管理者の責任を担う準備ができていることを証明しています。明日は、「鍵の守護者」としての最後のチャレンジに挑みます。Project Phoenixのセキュリティの人的要素を管理し、システムへのユーザーアクセスを制御しましょう!

✨ 解答を確認して練習✨ 解答を確認して練習✨ 解答を確認して練習✨ 解答を確認して練習