最新の「新着記事」はここから New!
2008-08-18
ファイルパーミッションの表現方法
ファイルパーミッションの表現方法について解説します。
まず、「読み込み権限」「書き込み権限」「実行権限」を表現する方法について解説します。UNIXにおいては、これらを3桁のビット列で表現します。3桁のビットの意味は以下のようになります。
| 読み込み | 書き込み | 実行 | |
| 可 | 1 | 1 | 1 |
| 不可 | 0 | 0 | 0 |
3桁目が読み込み権限を表すビット、2桁目が書き込み権限を表すビット、1桁目が実行権限を表すビットになります。1であれば権限があり、0であれば権限がないということを意味します。
たとえば、ビット列が110ならば、読み込み権限と書き込み権限があり、101ならば読み込み権限と実行権限があります。
ファイルパーミッションの8進数表現
ファイルパーミッションは単なるビット列ですが、便宜のために8進数で指定することが多いです。chmodというコマンドでパーミッションを変更する場合、sysopen関数でパーミッションの指定する場合などに8進数を使います。
2進数(ビット列)と8進数の対応を記載しておきます。
| 2進数 | 8進数 | 2進から8進への変換 |
| 000 | 0 | 4×0 + 2×0 + 1×0 |
| 001 | 1 | 4×0 + 2×0 + 1×1 |
| 010 | 2 | 4×0 + 2×1 + 1×0 |
| 011 | 3 | 4×0 + 2×1 + 1×1 |
| 100 | 4 | 4×1 + 2×0 + 1×0 |
| 101 | 5 | 4×1 + 2×0 + 1×1 |
| 110 | 6 | 4×1 + 2×1 + 1×0 |
| 111 | 7 | 4×1 + 2×1 + 1×1 |
この中でよく使われるのが、6(110,読み込みと書き込み)、 7(111,読み込みと書き込みと実行)、4(100,読み込み)、5(101,読み込みと実行)の4つです。この4つの数字については覚えておくと便利です。
ファイルパーミッションの文字表現
ファイルパーミッションは人間が読みやすいように文字で表現されることも多いです。chmod でパーミッションを指定するときや、ls -l コマンドでファイルの詳細情報を表示するときに使われたりします。
読み込み権限のビットは「r」、書き込み権限のビットは「w」、実行権限のビットは「x」で表現されます。ビットが立っていない場合は「-」で表現されます。
これを踏まえて対応表をもう一度作って見ます。
| 2進数 | 8進数 | 文字表現 |
| 000 | 0 | - - - |
| 001 | 1 | - - x |
| 010 | 2 | - w - |
| 011 | 3 | - w x |
| 100 | 4 | r - - |
| 101 | 5 | r - x |
| 110 | 6 | r w - |
| 111 | 7 | r w x |
この対応表を書けるようになれば、パーミッションの理解は完璧です。


