Linuxのファイルシステムには、システムのセキュリティとアクセス制御を管理するために、強力な「ファイルの権限(パーミッション)」の仕組みが組み込まれています。Linuxのパーミッション管理は、ユーザーがファイルやディレクトリに対してどのような操作を行えるかを細かく制御することを可能にし、システム全体のセキュリティを保つために重要な役割を果たします。この記事では、Linuxのファイルパーミッションの基本的な概念から、実際の操作方法までを完全かつ包括的に解説します。
1. Linuxのファイルシステムにおけるパーミッションの概念
Linuxにおけるファイルシステムでは、各ファイルとディレクトリに対して「パーミッション(権限)」が設定されています。これらのパーミッションは、ユーザーがそのファイルに対してどの操作を実行できるかを定義します。基本的に、Linuxではファイルに対して3つの主要な操作を行うことができます:
- 読み取り(Read: r): ファイルの内容を読むことができる権限。
- 書き込み(Write: w): ファイルの内容を変更、更新、または削除することができる権限。
- 実行(Execute: x): ファイルを実行することができる権限。
これらの権限は、各ファイルやディレクトリに設定されたユーザー、グループ、およびその他のユーザーに対して個別に適用されます。
2. ユーザー、グループ、その他のユーザー
Linuxでは、システム上のユーザーは以下の3つのカテゴリーに分けられます:
- ユーザー(User, u): ファイルの所有者。このユーザーはそのファイルを作成したり所有する人物です。
- グループ(Group, g): ファイルが属するグループ。複数のユーザーが同じグループに所属することがあります。
- その他(Others, o): ユーザーでもグループでもない全ての他のユーザー。このカテゴリーには、システム内の全てのユーザーが含まれます。
3. パーミッションの表示方法
Linuxのターミナルで、ファイルやディレクトリのパーミッションを確認するために、ls -l コマンドを使用します。このコマンドの出力は、次のような形式になります:
sql-rwxr-xr-x 1 user group 1234 Mar 3 12:34 filename
出力の各部分は次のように解釈できます:
- 最初の文字(
-、d、lなど)はファイルの種類を示します。-は通常のファイル、dはディレクトリ、lはシンボリックリンクを示します。 - 次の9文字は、ファイルのパーミッションを示します。この部分は3つのグループに分かれており、各グループはユーザー、グループ、その他のユーザーに対応しています。例えば、
rwxr-xr-xは以下のように分解できます:- 最初の3文字(
rwx)はユーザーのパーミッション(読み取り、書き込み、実行)。 - 次の3文字(
r-x)はグループのパーミッション(読み取り、実行)。 - 最後の3文字(
r-x)はその他のユーザーのパーミッション(読み取り、実行)。
- 最初の3文字(
4. パーミッションの変更方法
Linuxでは、ファイルやディレクトリのパーミッションを変更するために、chmod コマンドを使用します。chmod コマンドには、2つの方法でパーミッションを変更することができます:記号モードと数値モードです。
記号モード
記号モードでは、パーミッションを+(追加)、-(削除)、=(設定)を使って変更します。たとえば、次のようにパーミッションを変更できます:
chmod u+x filename— ユーザー(所有者)に実行権限を追加します。chmod g-w filename— グループから書き込み権限を削除します。chmod o=r filename— その他のユーザーに読み取り専用権限を設定します。
数値モード
数値モードでは、パーミッションを0から7の数字で指定します。それぞれの数値は、読み取り(4)、書き込み(2)、実行(1)の権限の合計を表しています。例えば:
chmod 755 filename— ユーザーに読み取り、書き込み、実行権限を、グループとその他のユーザーに読み取りと実行権限を与えます。chmod 644 filename— ユーザーに読み取りと書き込み権限を、グループとその他のユーザーに読み取り権限を与えます。
この方法では、パーミッションを設定するために、以下のように合計を計算します:
- 読み取り(r)= 4
- 書き込み(w)= 2
- 実行(x)= 1
たとえば、rwx は 4+2+1 = 7、r-x は 4+0+1 = 5 となります。
5. ディレクトリに対するパーミッション
ディレクトリにもパーミッションがありますが、ファイルと少し異なります。ディレクトリにおけるパーミッションは、以下のように解釈されます:
- 読み取り(r): ディレクトリの中身をリスト表示できる。
- 書き込み(w): ディレクトリ内でファイルを作成、削除、または名前を変更できる。
- 実行(x): ディレクトリ内にアクセスして、ファイルを開くことができる。
ディレクトリの実行権限がないと、そのディレクトリ内のファイルにアクセスできなくなります。
6. その他の重要なコマンド
- chown: ファイルの所有者やグループを変更するために使用します。
chown user:group filename— 所有者をuser、グループをgroupに変更します。
- chgrp: ファイルのグループを変更するために使用します。
chgrp group filename— ファイルのグループをgroupに変更します。
7. 特殊なファイルパーミッション
Linuxには、一般的なパーミッションとは別に、いくつかの特殊なパーミッションがあります:
- setuid(セットユーザーID): 実行中のプログラムが、実行するユーザーではなく、ファイルの所有者として動作する権限を与えます。
- setgid(セットグループID): 実行中のプログラムが、実行するユーザーではなく、ファイルのグループとして動作する権限を与えます。
- sticky bit: ディレクトリに設定されている場合、そのディレクトリ内のファイルは所有者のみが削除または変更できるようになります。
結論
Linuxのパーミッションは、システムのセキュリティとユーザーアクセス管理の中心的な役割を担っています。ファイルの権限を適切に設定することで、システムの安全性を確保し、不要なアクセスを防ぐことができます。Linuxのパーミッションシステムを理解し、効果的に運用することは、システム管理者にとって非常に重要なスキルです。
