755ってなんの数字──chmodの3桁が4+2+1の足し算でできている理由
chmodの755や644は、読む(4)・書く(2)・実行する(1)という3つの権限の合計です。所有者・グループ・その他の3桁それぞれで足し算するだけの仕組みと、777にしてはいけない理由を整理します。
サーバー作業で「このディレクトリ、755にしといて」と言われて、意味も分からずコピペでコマンドを打った経験はないでしょうか。755も644も、なんとなく「よく見る数字」として覚えているだけで、中身を説明しろと言われると詰まる人は多いはずです。
結論を先に書きます。
**chmodの3桁の数字は、読む権限(4)・書く権限(2)・実行する権限(1)を、所有者・グループ・その他それぞれについて足し合わせたものです。**755は「所有者は読み書き実行の全部(4+2+1=7)、グループとその他は読みと実行だけ(4+1=5)」という意味になります。3桁の並びと足し算の理屈さえ分かれば、初見の数字でも読めるようになります。
rwxはそれぞれ4・2・1という重みを持っている
Linuxのファイル権限は、**読む(r)・書く(w)・実行する(x)**という3種類の許可の組み合わせで表現されます。この3つに、それぞれ次の重みが割り当てられています。
| 権限 | 記号 | 数値 |
|---|---|---|
| 読む(read) | r | 4 |
| 書く(write) | w | 2 |
| 実行する(execute) | x | 1 |
3つとも許可するなら 4+2+1=7、読みと実行だけなら 4+1=5、読みだけなら4、というように、必要な権限の数値を足し算するだけで1桁分の数字が決まります。2進数の3桁(rwxそれぞれON/OFF)を、そのまま8進数1桁に対応させている、と考えると仕組みがすっきりします。
3桁の数字は「誰に対する権限か」を並べたもの
chmodの数字は3桁並んでいますが、それぞれ誰に対する権限かが違います。
| 桁の位置 | 対象 |
|---|---|
| 1桁目 | 所有者(そのファイルの持ち主) |
| 2桁目 | グループ(同じグループに属するユーザー) |
| 3桁目 | その他(それ以外の全員) |
この「対象 × 権限の重み」の組み合わせで、よく見る数字を読み解いてみます。
| 数値 | 記号表記 | 意味 |
|---|---|---|
| 755 | rwxr-xr-x | 所有者は読み書き実行、グループとその他は読み実行のみ |
| 644 | rw-r—r— | 所有者は読み書き、グループとその他は読みのみ |
| 600 | rw------- | 所有者だけが読み書きでき、他は一切アクセス不可 |
755は「実行できるファイル(プログラムやディレクトリ)を、自分だけは自由に編集でき、他の人には見せるだけ」にしたいときの定番です。644は「実行する必要のない設定ファイルや画像など、自分は編集できて他は閲覧だけ」というケースでよく使われます。
777にしてはいけない理由
権限まわりでエラーが出たとき、とりあえず777(rwxrwxrwx=全員に読み書き実行を許可)にして解決したくなる場面があります。ですが、これは誰でもそのファイルを書き換えられ、誰でも実行できる状態を意味します。
Webサーバー上のディレクトリが777になっていると、想定していない第三者がファイルを書き換えたり、悪意のあるプログラムを配置して実行させたりする経路になり得ます。必要な権限だけを、必要な対象にだけ与えるというのが権限設計の基本で、777は「とりあえず全部許可」という一番危うい選択肢だと覚えておくと安全です。
3桁の数字と記号表記、どちらで考えても迷わないように、パーミッション(chmod)を整える ではrwxのチェックボックス・8進数・記号表記の3つをリアルタイムに相互変換できます。ls -l で見た1行をそのまま貼り付けると意味を色分けして表示してくれるので、次にサーバーの権限設定に迷ったときはコピペで済ませず、一度中身を確認してから数字を決める習慣をつけておくと安心です。