Chmod計算機とLinuxファイル権限ガイド
LinuxやUnixの世界では、誰がファイルを読み取り、書き込み、または実行できるかを管理することは基本的なセキュリティタスクです。chmod(change mode)コマンドは、そのための主要なツールです。Webサーバーの「403 Forbidden」エラーを修正する開発者であれ、サーバーを要塞化するシステム管理者であれ、ファイル権限を理解することは不可欠です。
このガイドでは、Linuxの権限の仕組み、8進数表記とシンボル表記の違い、およびChmod計算機の使用方法について説明します。
1. 権限構造の理解
Linuxのすべてのファイルとディレクトリには3つの権限セットがあり、それぞれに3種類のアクセスタイプが含まれています。
3つの階層 (Who)
- 所有者 (User, u):ファイルの所有者。
- グループ (Group, g):ファイルの所属グループのメンバー。
- その他 (Others, o):システム上の他の全員。
3つのアクセスタイプ (What)
| 記号 | アクセスタイプ | 8進数値 | 説明 |
|---|---|---|---|
r |
読み取り (Read) | 4 |
ファイルの内容を開いて表示する。 |
w |
書き込み (Write) | 2 |
ファイルを変更または削除する。 |
x |
実行 (Execute) | 1 |
ファイルをプログラム/スクリプトとして実行する。 |
- |
なし | 0 |
アクセスを許可しない。 |
2. シンボル表記 vs 8進数表記
権限を表現および変更するには2つの方法があります。
8進数表記(数値)
各アクセスタイプの値を加算して権限を計算します。
7(4+2+1):読み取り、書き込み、実行6(4+2):読み取り、書き込み5(4+1):読み取り、実行4:読み取り専用
例:chmod 755 myfile
- 所有者:7 (rwx)
- グループ:5 (r-x)
- その他:5 (r-x)
シンボル表記(文字)
誰に対して何を変更するかを文字を使って表します。
chmod u+x myfile:所有者に実行権限を追加。chmod g-w myfile:グループから書き込み権限を削除。- 例:
chmod u=rwx,g=rx,o=rx myfile(755と同じ)
3. よく使われる Chmod コマンド
| コマンド | 権限 | 使用シーン |
|---|---|---|
chmod 777 |
rwxrwxrwx |
危険! 全員がすべての操作を可能。テスト目的のみ。 |
chmod 755 |
rwxr-xr-x |
公開ディレクトリやスクリプトの標準。 |
chmod 644 |
rw-r--r-- |
公開ファイルの標準(全員が読み取り可能、所有者のみ書き込み可能)。 |
chmod 600 |
rw------- |
プライベートファイル(SSHキー、設定ファイルなど)。 |
chmod 400 |
r-------- |
読み取り専用のプライベートファイル。 |
4. 高度な権限:SUID、SGID、スティッキービット
基本的なrwx以外に、Linuxは特定の動作のために特殊なビットを使用します。
- SUID (4000):ファイルが実行される際、所有者の権限で実行される。
- SGID (2000):ディレクトリ内に作成されたファイルは、そのディレクトリのグループを継承する。
- スティッキービット (1000):ファイルの所有者(またはroot)のみがディレクトリ内のファイルを削除または名前変更できる(
/tmpで一般的)。
5. Chmod計算機の使用
8進数値を手動で計算する(例:「rwx r-x r-x」= 755)のは間違いやすいものです。Chmod計算機を使用すると、希望する権限のチェックボックスをオンにするだけで、正しい8進数またはシンボルのコマンドを生成できます。
専用のchmodツールはまだありませんが、ファイルの権限の基礎となるロジックである基数変換(バイナリから10進数など)には、当サイトの**単位変換器**を使用できます。
FAQ:ファイル権限のトラブルシューティング
Q: sudoを使用しても「Permission Denied」になります。なぜですか?
A: sudoはroot権限を与えますが、特定のファイルシステム制限(不変ビットなど)やネットワークファイルシステム(NFS)の権限をバイパスできない場合があります。また、親ディレクトリに実行(x)ビットが設定されているか確認してください。ディレクトリに「入る」にはこれが必要です。
Q: 再帰的に権限を変更するにはどうすればよいですか?
A: -Rフラグを使用します。例えば、chmod -R 755 /my/directory/は、そのディレクトリとその中のすべてのファイルおよびサブディレクトリに権限を適用します。
Q: sudoとchmodの違いは何ですか?
A: chmodはファイルの「ルール」を変更します。sudo(Substitute User Do)は、それらのルールを変更する権限を持つ「別のユーザー」(通常はroot)として動作することを可能にします。
Tool3M 関連ツール
- 単位変換器: ファイル権限におけるバイナリ/10進数のロジックを理解するのに役立ちます。
- Base64エンコーダー: 設定ファイルやバイナリデータを扱う際によく使用されます。
- JSONフォーマッタ: 正しい権限を設定した後、設定ファイルを検証します。