chmod 計算機
| クラス | 読み取り (r) | 書き込み (w) | 実行 (x) |
|---|---|---|---|
| 所有者 | |||
| グループ | |||
| その他 |
Unix のファイルパーミッションは、ユーザー・グループ・その他のそれぞれについて読み取り・書き込み・実行という 3 つ組で構成され、これを 3 桁の 8 進数にきれいにまとめることができます。chmod 755 script.sh は rwxr-xr-x を表し、所有者はすべての権限を持ち、グループとその他は読み取りと実行ができます。この計算機では、各チェックボックスを切り替えると 8 進数の値がリアルタイムで変わり、逆に 8 進数を貼り付けると rwx の内訳が表示されます。コピーできる正確な chmod コマンドも一緒に確認できます。
chmod パーミッションの仕組み
-
1
9 個のパーミッションビットを切り替える
3 つのグループ(ユーザー、グループ、その他)× 3 つの権限(読み取り、書き込み、実行)= 9 個のチェックボックス。
-
2
各グループが 1 桁の 8 進数になる
読み取り = 4、書き込み = 2、実行 = 1。有効にしたいビットを合計します。
-
3
生成される 8 進数と記号表記を読み取る
例: 755 → rwxr-xr-x、644 → rw-r--r--、600 → rw-------。
-
4
chmod コマンドをコピーする
このツールは現在のパーミッションに対応する chmod コマンドを表示し、コピーできます。例: chmod 755 ファイル名、chmod u+x ファイル名、chmod -R 755 ディレクトリ。
パーミッションビットの値
| ビット | 値 | ファイルでの意味 | ディレクトリでの意味 |
|---|---|---|---|
| 読み取り | 4 | 内容を表示できる | エントリを一覧表示できる |
| 書き込み | 2 | 変更できる | エントリの作成・削除・名前変更ができる |
| 実行 | 1 | プログラムとして実行できる | 中に入れる(cd で移動して内部にアクセス) |
よく使う chmod の値
| 8 進数 | 記号表記 | 主な用途 |
|---|---|---|
| 777 | rwxrwxrwx | 誰でも書き込み可能、危険であり、ほとんど適切でない |
| 755 | rwxr-xr-x | スクリプト、バイナリ、ディレクトリ |
| 750 | rwxr-x--- | 自分と自分のグループだけのスクリプト |
| 700 | rwx------ | 自分だけのスクリプト(SSH、~/.ssh) |
| 644 | rw-r--r-- | 公開ドキュメント、画像、HTML |
| 640 | rw-r----- | グループが読み取れる設定ファイル |
| 600 | rw------- | 非公開の設定、SSH 秘密鍵、~/.netrc |
| 444 | r--r--r-- | 読み取り専用で公開するファイル |
| 400 | r-------- | 非公開の読み取り専用(ほとんど適切でない。600 を使う) |
特殊なパーミッション(まれだが重要)
- setuid (4xxx): 誰が実行しても、そのファイルの所有者として実行されます。
/usr/bin/passwdがこれを使っています。 - setgid (2xxx): ファイルではグループとして実行されます。ディレクトリでは、新しいファイルがそのディレクトリのグループを継承します。
- スティッキービット (1xxx): ディレクトリでは、ファイルの所有者だけが削除・名前変更できます。
/tmpがこれを使っています。
4 桁の 8 進数にはこれらが含まれます。chmod 4755 setuid-binary は 755 に加えて setuid を有効にします。
記号形式の chmod
多くの管理者は、段階的な変更には記号形式を好みます。
chmod u+x script、所有者だけに実行権限を追加します。chmod go-w file、グループとその他から書き込み権限を削除します。chmod a+r file、全員(ユーザー、グループ、その他)に読み取り権限を与えます。chmod u=rw,go=r file、これらのビットを正確に設定します。chmod -R 755 directory、再帰的に適用します。
よくある間違い
- アップロードフォルダーに 777: 「パーミッションを直す」ように見えますが、実際にはサーバーを攻撃者にさらします。より狭い組み合わせを使ってください(例: 正しいグループ所有権を設定した 755)。
- ディレクトリに chmod -R 644: ディレクトリの実行権限を外してしまうため、
cdで中に入れなくなります。ディレクトリには 755、通常のファイルには 644 を使ってください。 - 0600 と 600: 先頭のゼロは C やシェルで 8 進数を示します。ほとんどの chmod 実装はどちらも受け付けます。
- umask: 新しいファイルは 666 から umask を引いた値を継承します。デフォルトの umask 022 では、ファイルが 644、ディレクトリが 755 になります。
よくある質問
通常は、所有者が変更でき、ほかの全員が一覧表示と移動をできるようにしたいものです。755 = 所有者は rwx、グループとその他は r-x で、まさにその組み合わせになります。
ほぼ使うべきではありません。777 はシステム上の誰もがそのファイルを変更できるようにします。マルチユーザーのシステムではセキュリティホールになり、シングルユーザーのシステムでは不要です(所有者はすでに 755 で rwx を持っています)。Web アプリに 777 が必要に見える場合、本当の解決策は正しい所有権の設定(chown)かグループへの所属です。
~/.ssh ディレクトリ: 700。秘密鍵(id_rsa、id_ed25519): 600。公開鍵(.pub): 644。authorized_keys: 600。SSH は安全対策として、これより広いパーミッションの鍵を拒否します。
所有者には chown、グループには chgrp を使います。これらは別々のコマンドです。chmod はビットだけを変更し、ファイルを所有するユーザーやグループは変更しません。
関連ツール
バイナリからASCIIへの変換ツール
バイナリ(スペース区切りのバイト、または長いビット列)を貼り付けると、それが表すASCIIテキストを8ビットずつ復号して取得できます。
BinaryからHexへのコンバーター
バイナリ入力を大文字の16進数値に変換します。0と1以外は無視され、先頭の0は保持されません。
FPS カウンター
requestAnimationFrame でブラウザーの FPS を測定。平滑化、最小・最大フレームレート、警告しきい値、任意のグラフに対応。ローカルで動作し、アップロードも API も不要です。
カラーパレットジェネレーター
基準のHEXカラーから、モノクロマティック、類似色、補色、トライアド、テトラードのパレットを生成し、コピーしやすいCSS変数として書き出します。
ランダムカラーパレットジェネレーター
2〜15色のランダムなカラーパレットを生成し、ビビッド、パステル、ミュート、ダークからスタイルを選んで、HEXコードやCSS変数をコピーできます。
Base64 → Hex 変換ツール
標準のBase64文字列を、大文字の16進数で連続して表したバイト列へ変換します。厳密なデコード処理で、トークン、鍵、JWT署名の確認に最適です。