はじめに

LabEx Corporation での 4 日目へようこそ。要塞の守護者として活躍する日です!昨日、Project Phoenix の重大な問題を見事に解決したあなたの調査力を受け、CTO があなたをプロジェクト全体のセキュリティ責任者に任命しました。

朝のブリーフィングで、CTO は次のように説明しました。「もう一度セキュリティインシデントが起きるような事態は避けなければなりません。あなたの調査によって、これまでのセキュリティ設定が不十分だったことが明らかになりました。Sarah Chen と開発チームが予定どおり 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 は Sarah Chen の開発チームが主導しており、テクニカルリードの 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 に設定してください。このステップは、その所有権設定を前提としています。

セットアップスクリプトは labex ユーザーを developers グループに追加しますが、現在の shell が新しいグループ所属を自動的に反映しない場合があります。~/project/phoenix_project/src でアクセスをテストする前に、terminal で newgrp developers を実行してください。これを行わないと、所有権と権限が正しくても Permission denied エラーが表示される場合があります。

開発チームが ~/project/phoenix_project/src ディレクトリ内で効率よく共同作業できるようにします。共同作業を円滑にするため、src 内で新しく作成するファイルやディレクトリには、自動的に developers グループが所属するように設定します。この特殊な権限が影響するのは、グループ所有者だけです。ユーザー所有者は、作成したアカウントのままです。また、ファイルの読み取り・書き込み権限は、そのユーザーの umask に左右されます。

タスク

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

要件

  • ~/project/phoenix_project/src 内で新しく作成するファイルが、自動的に developers グループを継承するようにします。
  • 最終的な権限では、所有者と developers グループの両方に src ディレクトリの読み取り、書き込み、移動に必要な実行の権限を与え、その他のユーザーにはアクセスを許可しません。
  • この特殊な権限の設定には 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 と Sarah Chen は、あなたが実装した包括的なセキュリティ対策に驚いています。これでプロジェクトディレクトリは、TechNova の知的財産を守りながら円滑な共同作業も可能にする要塞となりました。

このチャレンジを通じて、Linux の重要なセキュリティスキルを身につけました。

  • ファイルの作成と基本権限: きめ細かな権限制御によって、機密性の高いプロジェクトキーを保護しました。
  • 所有権の管理: Sarah の開発チームとテクニカルリードに、適切な所有権を割り当てました。
  • ディレクトリのセキュリティ: メインプロジェクト基盤へのアクセスとセキュリティのバランスを取りました。
  • 高度な権限: setgid 権限を設定し、グループ所有権を自動的に継承する共同作業用ワークスペースを構築しました。
  • 共同作業用ワークスペース: セキュリティを維持しながら生産性を高められる、チーム用の共同作業スペースを設定しました。

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

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