はじめに
LabEx Corporationでの4日目へようこそ、要塞の守護者(Fortress Guardian)よ!昨日、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を完了していることを確認してください。ステップ2では、すべてのプロジェクトディレクトリ(
srcを含む)の所有権をdev_lead:developersに設定しています。このステップは、その所有権設定に基づいています。セットアップスクリプトは
labexユーザーをdevelopersグループに追加しますが、現在のシェルがその新しいグループメンバーシップを自動的に認識しない場合があります。~/project/phoenix_project/srcでアクセスをテストする前に、ターミナルで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 権限を構成し、グループ所有権の自動継承を伴う共同作業ワークスペースを確保しました。
- 共同作業ワークスペース: セキュリティを維持しながら生産性を高めるチーム共同作業スペースを構成しました。
これらの高度なセキュリティスキルは、あなたがシニアシステム管理者の責任を担う準備ができていることを証明しています。明日は、鍵の守護者(Keeper of the Keys)として最後のチャレンジに挑みます。システムへのユーザーアクセスを制御し、Project Phoenixのセキュリティにおける人的要素を管理しましょう!



