Linux グループの変更

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

はじめに

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) を示しています。

私たちのシステムでは、defendersstrategists の 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 のファイルセキュリティにおけるグループパーミッションの重要性を理解しました。

この実験でカバーされた主要な概念は以下の通りです。

  1. chgrp を使用してファイルのグループ所有権を変更する
  2. 再帰的なグループ所有権の変更に -R オプションを使用する
  3. ls -l でファイルの所有権とパーミッションを表示する
  4. getent groupgroups でグループ情報を調べる
  5. グループ所有権とファイルパーミッションの関係を理解する
  6. chmod でグループパーミッションを変更する

これらのスキルは、Linux システム管理、特に共有リソースの管理と適切なアクセス制御の実装に不可欠です。グループ所有権を正しく割り当てて管理する能力は、ファイルやディレクトリへの適切なアクセスを許可しながら、セキュリティを維持するのに役立ちます。