Linuxのファイル許可(File Permissions)は、システム内のセキュリティとアクセス制御において非常に重要な役割を果たします。ファイルやディレクトリに対するアクセス権を管理することで、ユーザーやプロセスがどのようにリソースにアクセスできるかを制限することができます。このシステムは、特にマルチユーザー環境で、各ユーザーやグループがシステムに対して持つべき権限をきちんと管理するために必要不可欠です。
1. ファイル権限の基本概念
Linuxにおけるファイルの権限は、3つの主要な属性から成り立っています:読み取り(r)、書き込み(w)、実行(x)です。これらの権限は、各ユーザーに対して設定されます。具体的には、以下の3つのカテゴリが存在します:
- 所有者(Owner):ファイルまたはディレクトリの作成者であり、通常はそのファイルの管理者です。
- グループ(Group):ファイル所有者と同じグループに所属するユーザーです。
- その他(Others):システム内の他のすべてのユーザーです。
これらの権限は、ファイルやディレクトリがどのように操作できるかに影響します。例えば、所有者がファイルを読み取ることができる場合、その権限は所有者にのみ適用され、他のユーザーには適用されません。
2. ファイル権限の表示方法
Linuxでは、ls -l
コマンドを使用してファイルやディレクトリの権限を表示することができます。コマンドを実行すると、次のような結果が得られます。
diff-rwxr-xr--
この表示は、ファイルのアクセス権限を次のように示しています:
- 最初の文字はファイルの種類を示します。
-
は通常のファイルを、d
はディレクトリを示します。 - 次の3文字は所有者の権限(読み取り、書き込み、実行)を示します。
- 次の3文字はグループの権限を示します。
- 最後の3文字はその他のユーザーの権限を示します。
例えば、上記の-rwxr-xr--
の場合:
- 所有者(Owner)は読み取り、書き込み、実行のすべての権限(rwx)を持っています。
- グループ(Group)は読み取りと実行の権限(r-x)を持っています。
- その他のユーザー(Others)は読み取りの権限(r–)を持っています。
3. ファイル権限の変更
Linuxでは、chmod
コマンドを使ってファイルやディレクトリの権限を変更できます。このコマンドは、ユーザーに対してファイルへのアクセス権限を設定するために使用されます。
権限の設定方法
chmod
コマンドには、2つの主要な設定方法があります:
- 記号モード:文字を使って権限を指定します。例えば、
r
(読み取り)、w
(書き込み)、x
(実行)などの文字を組み合わせます。 - 数値モード:権限を数値で表現します。
r
は4、w
は2、x
は1として、これらの数字を足し合わせたものを指定します。
記号モードの例
bashchmod u+x ファイル名
このコマンドは、所有者(user)に実行(x)の権限を付与します。
bashchmod go-r ファイル名
このコマンドは、グループ(group)およびその他のユーザー(others)から読み取り(r)の権限を削除します。
数値モードの例
権限の数値モードは、3桁の数字で構成されます。各桁は所有者、グループ、その他のユーザーに対応します。
例えば、chmod 755 ファイル名
というコマンドでは、次のような設定がされます:
- 所有者は
rwx
(7、4+2+1) - グループは
rx
(5、4+1) - その他のユーザーは
rx
(5、4+1)
4. ディレクトリの権限
ディレクトリの権限もファイルの権限と同様に管理されますが、ディレクトリには特有の権限があります。特に実行(x)権限が重要です。ディレクトリに対する実行権限は、そのディレクトリにアクセスして内容を表示できるかどうかを決定します。実行権限がなければ、そのディレクトリ内のファイルやサブディレクトリにアクセスすることができません。
5. 特殊な権限
Linuxには、通常の権限設定に加えて、いくつかの特殊な権限があります。これらの権限は、セキュリティを強化したり、特定のシナリオで便利に使用されます。
setuid、setgid、stickyビット
- setuid:プログラムが実行されるとき、そのプログラムを実行するユーザーではなく、プログラムの所有者の権限で実行されます。この権限は主に、セキュリティに関連する特別な処理が必要な場合に使用されます。例えば、
/usr/bin/passwd
コマンドにはsetuidビットが設定されており、通常のユーザーでもその権限でパスワード変更を行うことができます。 - setgid:ファイルに対して設定された場合、そのファイルを実行するユーザーがファイルのグループ所有権を引き継ぎます。ディレクトリに対して設定された場合、新しく作成されたファイルがそのディレクトリと同じグループを持つようになります。
- stickyビット:ディレクトリに設定されることが多いこのビットは、そのディレクトリ内のファイルを他のユーザーが削除することを防ぎます。特に共有ディレクトリで使用されます。
6. ファイル所有者の変更
ファイルの所有者やグループを変更するには、chown
コマンドを使用します。このコマンドにより、ファイルまたはディレクトリの所有者やグループを変更できます。
bashchown 所有者:グループ ファイル名
例えば、chown root:admin ファイル名
というコマンドは、ファイルの所有者をroot
に、グループをadmin
に変更します。
結論
Linuxのファイル権限は、システムのセキュリティを保護し、ユーザーがファイルやディレクトリにアクセスする方法を適切に管理するための基本的かつ強力なツールです。正しい権限設定は、システムの安全性を確保するために非常に重要です。適切な権限設定を行うことで、不正アクセスを防ぎ、システムの安定性と信頼性を保つことができます。