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進数読取り書込み実行
0000×××
1001××
2010××
3011×
4100××
5101×
6110×
7111

この表を丸暗記する必要はありません。

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
↓
読取り ○ 書込み ○ 実行 ×

この手順で考えれば、ファイル権限の問題を確実に解けるようになります。

訪問数 1 回, 今日の訪問数 1回

広告