Linuxパーミッションの数字の意味

 Linux系OSでパーミッションといえば、755などの数値表記がスタンダードですが、今回は、なぜそういった数字が使用されるのかをまとめてみました。

パーミッションとは

 パーミッションは、権限を表す情報で、「読み込み」「書き込み」「実行可能」の3種類で表されています。

 chmodコマンドで変更できます。

数字の意味

 パーミッション変更時の権限は、よく数字で表記します。これは、「読み込み」「書き込み」「実行可能」を3ビットの2進数で表し、8進数へ変換したものを使います。
 基数変換については、以下の記事もご参照ください。

情報系科目では基礎の基礎である、基数変換についてまとめてみました。 10進数 言うまでもなく、10進数の1桁目は、0~9に対応しています...
読み込み 書き込み 実行 8進数表記
1 1 1 7
1 1 0 6
1 0 1 5
1 0 0 4
0 1 1 3
0 1 0 2
0 0 1 1
0 0 0 0

 これらの8進数を、「所有者」「グループ」「その他」のユーザーに対してそれぞれ付与します。

 例えば、所有者以外には書き込み権限を与えたくない場合は、

ユーザー 読み込み 書き込み 実行 8進数表記
所有者 1 1 0 6
グループ 1 0 0 4
その他 1 0 0 4

 となるので、「644」が正解です。上記に加えて実行権限を与えたい場合は、実行権限のビットが1になりますので、以下のようになります。

ユーザー 読み込み 書き込み 実行 8進数表記
所有者 1 1 1 7
グループ 1 0 1 5
その他 1 0 1 5

 その昔、cgiというスクリプトが流行していたころは、「パーミッションを755に設定してください」などといった解説がされていましたが、それは、「所有者フルアクセス、その他は読み取りと実行のみ」という権限を与えるものだったのですね。

 ところで、2進数 -> 8進数が苦手であれば、以下のように考えることもできます。

読み込み 書き込み 実行
4 2 1

 割り当てたい権限を足していけばOKです。

最後に

 このように、フラグ列の管理をn進数で管理するのは、Windowsレジストリなどでも利用されているとおり、割とポピュラーな方法です。
 実際にプログラムを書くときは、あまり活用できないかもしれませんが、手法を覚えておくと、いつか使えるときが来るかもしれません。