はじめに
Linux では、すべてのファイルとディレクトリにはユーザーとグループの両方が割り当てられています。この所有権システムは、Linux のセキュリティとアクセス制御の基本的な要素です。グループ所有権を変更する能力は、ファイルのパーミッションとアクセス権を効率的に管理する必要があるシステム管理者にとって不可欠なスキルです。
この実験では、Linux でファイルやディレクトリのグループ所有権を変更できる chgrp コマンドに焦点を当てます。このコマンドを習得することで、ファイルのパーミッション管理をより深く理解し、システム管理の重要な側面を学ぶことができます。
この実験を通じて、個々のファイルやディレクトリを再帰的に対象としたさまざまなシナリオで chgrp コマンドの使用を練習します。また、グループ所有権の変更を検証する方法を学び、適切なグループ管理がシステムセキュリティにとって重要な理由を理解します。
ファイルのグループ所有権の理解
Linux では、すべてのファイルには所有者とグループの両方が存在します。グループの割り当ては、グループのパーミッションに基づいてどのユーザーがファイルにアクセスできるかを決定します。グループ所有権の表示と変更方法を見ていきましょう。
まず、プロジェクトディレクトリに移動します。
cd ~/project
次に、操作対象となる新しいファイルを作成しましょう。
touch defense_secrets.txt
ファイルの現在の所有権とパーミッションを表示するには、ls -l コマンドを使用します。
ls -l defense_secrets.txt
以下のような出力が表示されます。
-rw-r--r-- 1 labex labex 0 Jan 12 16:20 defense_secrets.txt
この出力にはいくつかの情報が含まれています。
- 最初の列はファイルのパーミッションを示しています。
- 3 番目の列は所有者 (labex) を示しています。
- 4 番目の列はグループ (labex) を示しています。
私たちのシステムでは、defenders と strategists の 2 つのグループが作成されています。chgrp コマンドを使用して、ファイルのグループ所有権をデフォルトの labex グループから defenders グループに変更しましょう。
sudo chgrp defenders defense_secrets.txt
次に、グループが正常に変更されたことを確認します。
ls -l defense_secrets.txt
出力には、ファイルが defenders グループに所属していることが表示されるはずです。
-rw-r--r-- 1 labex defenders 0 Jan 12 16:20 defense_secrets.txt
chgrp コマンドは、自分が所属していないグループに変更する場合、管理者権限が必要です。このため、この例では sudo を使用しています。
グループ所有権を再帰的に変更する
システム管理者は、単一のファイルだけでなく、ディレクトリ全体とその中のすべての内容のグループ所有権を変更する必要があることがよくあります。chgrp コマンドの -R(再帰的)オプションを使用すると、この作業が簡単になります。
まず、練習用に複数のファイルを含むディレクトリを作成しましょう。
mkdir -p ~/project/operational_plans
touch ~/project/operational_plans/plan1.txt
touch ~/project/operational_plans/plan2.txt
最初に、ディレクトリとその中のファイルの現在のグループ所有権を確認しましょう。
ls -l ~/project/operational_plans
両方のファイルがデフォルトの labex グループによって所有されていることがわかります。
-rw-r--r-- 1 labex labex 0 Jan 12 16:30 plan1.txt
-rw-r--r-- 1 labex labex 0 Jan 12 16:30 plan2.txt
ディレクトリとその中のすべてのファイルのグループ所有権を strategists グループに変更するには、chgrp コマンドに -R オプションを指定して実行します。
sudo chgrp -R strategists ~/project/operational_plans
-R オプションは、chgrp に再帰的に操作を行うよう指示し、ディレクトリとその中のすべての内容に変更を適用します。
次に、ディレクトリとその内容のグループ所有権が変更されたことを確認しましょう。
ls -l ~/project
ls -l ~/project/operational_plans
出力には、ディレクトリと両方のファイルが現在 strategists グループに所属していることが表示されるはずです。
drwxr-xr-x 2 labex strategists 4096 Jan 12 16:30 operational_plans
...
-rw-r--r-- 1 labex strategists 0 Jan 12 16:30 plan1.txt
-rw-r--r-- 1 labex strategists 0 Jan 12 16:30 plan2.txt
再帰オプションは、手動で各ファイルの所有権を変更するのが非現実的な大規模なディレクトリ構造を扱う場合に特に便利です。
グループ情報とパーミッションの理解
グループ所有権の変更方法がわかったところで、グループ情報の表示方法と、グループパーミッションが重要な理由を見ていきましょう。
Linux では、グループに関する情報は /etc/group ファイルに保存されています。getent コマンドを使用すると、システム上に存在するグループを表示できます。
getent group
これにより、システム上のすべてのグループの長いリストが表示されます。これまで扱ってきたグループのみを表示するには、出力をフィルタリングできます。
getent group | grep -E 'defenders|strategists'
以下のような出力が表示されるはずです。
defenders:x:1001:
strategists:x:1002:
現在のユーザーが所属しているグループを表示するには、groups コマンドを使用します。
groups
出力には、ユーザーが所属しているすべてのグループが表示されます。
labex adm cdrom sudo dip plugdev lpadmin sambashare
では、グループパーミッションが重要な理由を理解しましょう。Linux では、ファイルのパーミッションは所有者、グループ、その他の 3 つのカテゴリで定義されています。新しいファイルを作成し、そのパーミッションを変更してこれを実証しましょう。
touch ~/project/group_example.txt
ls -l ~/project/group_example.txt
出力にはデフォルトのパーミッションが表示されます。
-rw-r--r-- 1 labex labex 0 Jan 12 16:40 group_example.txt
パーミッション文字列 -rw-r--r-- は以下のように分解できます。
- 最初の文字:ファイルの種類(- は通常のファイルを意味します)
- 次の 3 文字 (rw-):所有者のパーミッション(読み取り、書き込み、実行不可)
- 次の 3 文字 (r--):グループのパーミッション(読み取りのみ)
- 最後の 3 文字 (r--):その他のパーミッション(読み取りのみ)
グループのパーミッションを書き込みアクセスを許可するように変更しましょう。
chmod g+w ~/project/group_example.txt
ls -l ~/project/group_example.txt
現在の出力は以下のようになります。
-rw-rw-r-- 1 labex labex 0 Jan 12 16:40 group_example.txt
グループのパーミッションが r-- から rw- に変更されたことに注意してください。
最後に、グループ所有権とグループパーミッションの両方を変更することで、これまで学んだことを組み合わせましょう。
sudo chgrp defenders ~/project/group_example.txt
chmod g+x ~/project/group_example.txt
ls -l ~/project/group_example.txt
結果は以下のようになるはずです。
-rw-rwxr-- 1 labex defenders 0 Jan 12 16:40 group_example.txt
これで、ファイルは defenders グループによって所有され、そのグループのメンバーに対して読み取り、書き込み、実行のパーミッションが付与されています。
まとめ
この実験では、chgrp コマンドを使用して Linux でグループ所有権を管理する方法を学びました。最初に単一のファイルのグループを変更し、次にディレクトリとその内容のグループを再帰的に変更する方法を学びました。最後に、グループ情報の表示方法と、Linux のファイルセキュリティにおけるグループパーミッションの重要性を理解しました。
この実験でカバーされた主要な概念は以下の通りです。
chgrpを使用してファイルのグループ所有権を変更する- 再帰的なグループ所有権の変更に
-Rオプションを使用する ls -lでファイルの所有権とパーミッションを表示するgetent groupとgroupsでグループ情報を調べる- グループ所有権とファイルパーミッションの関係を理解する
chmodでグループパーミッションを変更する
これらのスキルは、Linux システム管理、特に共有リソースの管理と適切なアクセス制御の実装に不可欠です。グループ所有権を正しく割り当てて管理する能力は、ファイルやディレクトリへの適切なアクセスを許可しながら、セキュリティを維持するのに役立ちます。



