3つの権限を「111」で考える――ファイルの読取り・書込み・実行
ファイルには、次の3つの権限があります。
- 読取り
- 書込み
- 実行
教科書では、これらを0~7の数字で表します。
しかし、いきなり「4は読取り、2は書込み、1は実行」と暗記しようとすると、数字の意味が分かりにくくなります。
そこで最初に、3つの権限を3個のON・OFFスイッチとして考えてみましょう。
なぞなぞ:ロボットの3つの機能
ある研究所に、データを扱うロボットがあります。
このロボットには、次の3つの機能があります。
- データを読む
- データを書き換える
- プログラムを実行する
それぞれの機能は、次の数字で表されます。
0:使えない
1:使える
3つの数字は、左から順に次の機能を表します。
読む 書く 実行する
たとえば、ロボットに次の暗号を設定しました。
111
このとき、ロボットは何ができるでしょうか。
111なら、すべての機能が使える
暗号の各桁を、機能の下に並べてみます。
読む 書く 実行する
1 1 1
1は「使える」という意味です。
したがって、111では、
- 読むことができる
- 書き換えることができる
- 実行することができる
となります。
つまり、
111 = すべて使える
です。
000なら、すべて使えない
今度は、次の暗号を考えます。
000
機能の下に並べると、次のようになります。
読む 書く 実行する
0 0 0
0は「使えない」という意味です。
そのため、000では、どの機能も使えません。
000 = 何も使えない
011なら何ができるか
次の暗号を考えてみましょう。
011
各桁を機能の下に並べます。
読む 書く 実行する
0 1 1
左端の「読む」は0なので使えません。
一方、「書く」と「実行する」は1なので使えます。
したがって、
011 = 書くことと実行することができる
となります。
100なら何ができるか
それでは、次の暗号では何ができるでしょうか。
100
選択肢から考えてみましょう。
ア. 読むことと実行することができる
イ. 読むことだけができる
ウ. 読むことと書くことができる
エ. 書くことと実行することができる
各桁を機能の下に並べます。
読む 書く 実行する
1 0 0
1になっているのは、「読む」だけです。
したがって、正解はイです。
100 = 読むことだけができる
この3桁は2進数である
ここまで使ってきた000、011、100、111は、すべて0と1だけでできています。
これは、3桁の2進数です。
2進数では、右から順に、各桁が次の値を持っています。
4の位 2の位 1の位
ファイルの権限では、この3つを次のように対応させます。
読取り 書込み 実行
4 2 1
したがって、111を10進数に直すと、次のようになります。\[ 1 \times 4 + 1 \times 2 + 1 \times 1 = 7 \]
つまり、
111₂ = 7
です。
111では3つの桁がすべて1なので、読取り・書込み・実行のすべてが許可されます。
100が4になる理由
100では、左端だけが1です。\[ 1 \times 4 + 0 \times 2 + 0 \times 1 = 4 \]
したがって、
100₂ = 4
となります。
左端は「読取り」を表しているため、4を設定すると、読取りだけが許可されます。
4 = 読取りのみ
010が2になる理由
010では、中央だけが1です。\[ 0 \times 4 + 1 \times 2 + 0 \times 1 = 2 \]
したがって、
010₂ = 2
中央は「書込み」を表しているため、2を設定すると、書込みだけが許可されます。
2 = 書込みのみ
001が1になる理由
001では、右端だけが1です。\[ 0 \times 4 + 0 \times 2 + 1 \times 1 = 1 \]
したがって、
001₂ = 1
右端は「実行」を表しているため、1を設定すると、実行だけが許可されます。
1 = 実行のみ
0~7と権限の対応
3つの権限を3桁の2進数で表すと、次のようになります。
| 10進数 | 2進数 | 読取り | 書込み | 実行 |
|---|---|---|---|---|
| 0 | 000 | × | × | × |
| 1 | 001 | × | × | ○ |
| 2 | 010 | × | ○ | × |
| 3 | 011 | × | ○ | ○ |
| 4 | 100 | ○ | × | × |
| 5 | 101 | ○ | × | ○ |
| 6 | 110 | ○ | ○ | × |
| 7 | 111 | ○ | ○ | ○ |
この表を丸暗記する必要はありません。
3桁の数字を見て、
読取り 書込み 実行
の順に並べれば、どの権限が許可されているかを判断できます。
元の問題を解いてみよう
ファイルの権限について、次の試行結果が得られました。
- 0を設定すると、読取り・書込み・実行ができない
- 3を設定すると、読取りはできないが、書込みと実行ができる
- 7を設定すると、読取り・書込み・実行がすべてできる
次のうち、適切なものはどれでしょうか。
ア. 2を設定すると、読取りと実行ができる
イ. 4を設定すると、実行だけができる
ウ. 5を設定すると、書込みだけができる
エ. 6を設定すると、読取りと書込みができる
6を2進数に直して考える
6を3桁の2進数で表すと、次のようになります。
6 = 110₂
権限の下に並べます。
読取り 書込み 実行
1 1 0
したがって、6では、
- 読取りができる
- 書込みができる
- 実行はできない
となります。
よって、正解はエです。
ほかの選択肢も確認する
ア:2を設定する
2は、2進数では010です。
読取り 書込み 実行
0 1 0
書込みだけができます。
したがって、「読取りと実行ができる」という説明は誤りです。
イ:4を設定する
4は、2進数では100です。
読取り 書込み 実行
1 0 0
読取りだけができます。
「実行だけができる」という説明は誤りです。
ウ:5を設定する
5は、2進数では101です。
読取り 書込み 実行
1 0 1
読取りと実行ができます。
「書込みだけができる」という説明は誤りです。
エ:6を設定する
6は、2進数では110です。
読取り 書込み 実行
1 1 0
読取りと書込みができます。
したがって、エが正解です。
なぜ0~7の8種類なのか
権限は全部で3つあります。
それぞれの権限には、
0:許可しない
1:許可する
という2通りの状態があります。
したがって、組合せの数は次のようになります。\[ 2 \times 2 \times 2 = 8 \]
3ビットで表せる組合せは、000~111までの8種類です。
10進数では、0~7に対応します。
000~111
↓
0~7
そのため、ファイルの3種類の権限は、0~7の数字で表すことができます。
覚え方
まず、次の並びを覚えます。
読取り 書込み 実行
4 2 1
次に、許可する権限の数字を足します。
たとえば、読取りと書込みを許可する場合は、\[ 4 + 2 = 6 \]
なので、設定する数字は6です。
読取りと実行を許可する場合は、\[ 4 + 1 = 5 \]
なので、設定する数字は5です。
すべてを許可する場合は、\[ 4 + 2 + 1 = 7 \]
なので、設定する数字は7です。
まとめ

ファイルの権限は、3つのON・OFFスイッチとして考えると分かりやすくなります。
読取り 書込み 実行
1なら許可、0なら不許可です。
111:すべて許可
000:すべて不許可
100:読取りだけ
010:書込みだけ
001:実行だけ
そして、各桁の値は次のとおりです。
読取り 書込み 実行
4 2 1
問題を解くときは、数字を丸暗記するのではなく、まず3桁の2進数に直してください。
6
↓
110
↓
読取り ○ 書込み ○ 実行 ×
この手順で考えれば、ファイル権限の問題を確実に解けるようになります。










ディスカッション
コメント一覧
まだ、コメントがありません