Linux における chown を使ったディレクトリ所有権の変更

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

はじめに

この実験では、Linux において chown コマンドを使用してディレクトリの所有権を修正する実務的な手法を学びます。ファイルやディレクトリの所有権をマスターすることは、Linux システム管理の根幹であり、権限の管理や共有リソースへのアクセスを保護するために不可欠です。このハンズオン演習では、共同プロジェクトを整理する際によく行われるタスクである、ディレクトリのグループ所有権を変更するプロセスを順を追って解説します。

まず、research という名前の新しいグループを作成し、現在のユーザーをそのグループに追加するという、必要な環境のセットアップから始めます。セットアップ後、ディレクトリを作成してその初期の所有権の詳細を確認します。この実験のメインパートでは、chown コマンドを使用してディレクトリを research グループに再割り当てします。最後に、ls -l コマンドを使用して所有権が正常に更新されたことを確認し、変更を確定させます。

環境の準備とグループ所属の確認

このステップでは、以降の演習に必要なユーザーグループを準備します。Linux では、ファイルの所有権はユーザーとグループによって定義されます。これにより、柔軟な権限管理が可能になります。ここでは research という新しいグループを作成し、現在のユーザーである labex をこのグループに追加します。これにより、後でファイルやディレクトリの所有権をこの特定のグループに割り当てることができるようになります。

まず、research グループを作成しましょう。これには groupadd コマンドを使用します。グループの作成はシステム設定ファイルを変更するため、管理者権限でコマンドを実行するために sudo を使用する必要があります。

ターミナルで次のコマンドを実行してください。

sudo groupadd research

このコマンドは、成功しても何も出力されません。グループが作成されたことを確認するために、/etc/group ファイル内を検索します。このファイルには、システム上のすべてのグループに関する情報が含まれています。grep コマンドを使用して、新しいグループに対応する行を探します。

grep 'research' /etc/group

グループ ID(数字の部分)は異なる場合がありますが、次のような出力が表示されるはずです。

research:x:5003:

グループが存在することを確認できたので、次は labex ユーザーをそのグループに追加します。「user modify(ユーザー修正)」を意味する usermod コマンドを使用します。ここで -aG オプションが重要です。-a は追加(append)を意味し、-G は補助グループを指定します。-a を付け忘れると、ユーザーは他のすべてのグループから削除されてしまうので注意してください。

次のコマンドを実行して、labexresearch グループに追加します。

sudo usermod -aG research labex

このコマンドも、成功した場合は何も出力されません。もう一度 /etc/group ファイルをチェックして、変更を確認しましょう。

grep 'research' /etc/group

出力の行末に labex が表示されていれば、そのユーザーがグループのメンバーであることを示しています。

research:x:5003:labex

research グループが作成され、labex ユーザーが割り当てられたことで、ファイルとディレクトリの所有権を管理するための環境が整いました。

ディレクトリの作成と初期所有権の確認

このステップでは、プロジェクトフォルダ内に新しいディレクトリを作成し、そのデフォルトの所有権設定を確認します。Linux で新しいファイルやディレクトリが作成されると、システムは自動的に所有権を割り当てます。通常、所有者はそれを作成したユーザーになり、グループ所有者はそのユーザーのプライマリグループになります。

現在の作業ディレクトリは /home/labex/project です。ここに RandD という名前の新しいディレクトリを作成します。「make directory(ディレクトリ作成)」を意味する mkdir コマンドを使用します。

次のコマンドを実行してディレクトリを作成します。

mkdir RandD

RandD ディレクトリが作成されたので、そのプロパティ、特に所有権を調べてみましょう。これには ls -l コマンドを使用します。-l オプションは「ロングリスティング(詳細表示)」形式を使用することを指定し、ファイルやディレクトリに関する詳細な情報を提供します。

ターミナルで次のコマンドを実行してください。

ls -l

現在の場所にあるファイルとディレクトリの一覧が表示されます。RandD に対応する行を探してください。出力は次のようになっているはずです。

drwxrwxr-x 2 labex labex 6 Jun 26 10:28 RandD

この行の所有権の部分を詳しく見てみましょう。3 番目の列はユーザー所有者を示しており、labex となっています。4 番目の列はグループ所有者を示しており、これも labex です。これにより、デフォルトでは新しいディレクトリが作成者(labex)とそのプライマリグループ(labex)によって所有されていることが確認できました。

次のステップでは、これらのデフォルトの所有権設定を変更する方法を学びます。

chown コマンドを使用したディレクトリ所有権の変更

このステップでは、chown コマンドを使用して RandD ディレクトリの所有権を変更します。これは、共有プロジェクトディレクトリを管理する際にシステム管理者が頻繁に行うタスクです。ここでの目的は、ユーザー所有者は labex のまま維持し、グループ所有者を最初のステップで作成した research グループに変更することです。これにより、グループに設定された権限に基づいて、research グループのメンバー全員がこのディレクトリで共同作業できるようになります。

所有権を変更するコマンドは chown で、「change owner(所有者変更)」の略です。一般的な構文は chown [ユーザー]:[グループ] [ファイル/ディレクトリ] です。

RandD ディレクトリの所有権をユーザー labex、グループ research に変更するには、次のコマンドを実行します。自分が所有しているディレクトリであっても、グループ所有権の変更には特権が必要な場合が多いため、sudo を使用します。

現在 ~/project ディレクトリにいる状態で、ターミナルでこのコマンドを実行してください。

sudo chown labex:research RandD

コマンドが成功した場合、出力は何も表示されません。変更は静かに適用されます。

これで RandD ディレクトリの所有権の変更に成功しました。最後のステップでは、この変更を視覚的に確認します。

ls -l による新しいディレクトリ所有権の確認

このステップでは、前のステップで行った所有権の変更が成功したことを確認します。システム管理において、実行したコマンドが意図した通りの効果をもたらしたかを常に検証することは非常に重要な習慣です。先ほどと同じ ls -l コマンドを使用して、ディレクトリのプロパティを検査します。

ターミナルは引き続き ~/project ディレクトリにあるはずです。RandD ディレクトリの更新された所有権の詳細を確認するために、再度 ls -l コマンドを実行します。

ls -l

RandD ディレクトリの出力行を確認してください。新しいグループ所有者が反映されているはずです。出力は次のようになります。

drwxrwxr-x 2 labex research 6 Jun 26 10:28 RandD

ステップ 2 で確認した出力と比較してみましょう。3 番目の列であるユーザー所有者は依然として labex です。しかし、4 番目の列であるグループ所有者は labex から research に変わっています。これにより、chown コマンドが正しく動作したことが確認できました。

これで、ディレクトリを作成し、共同作業を促進するためにグループ所有権を変更し、その変更を検証するという一連の作業が完了しました。

まとめ

この実験では、Linux 環境におけるディレクトリ所有権の管理に不可欠な手順を学びました。まず、sudo groupadd コマンドで research という新しいグループを作成し、必要なユーザーとグループの設定を準備しました。次に、sudo usermod -aG を使用して現在のユーザー labex をこの新しいグループに追加し、/etc/group ファイルを確認することでこれらの変更を検証しました。

環境を整えた後、新しいディレクトリを作成し、ls -l コマンドを使用してそのデフォルトの所有権を確認しました。この実験の核心となるスキルとして、chown コマンドを使用してディレクトリのグループ所有権を新しく作成した research グループに変更する操作を実践しました。最後に、再度 ls -l を実行してディレクトリのグループ所有者が更新されていることを確認し、変更が成功したことを確定させました。