権限:同じツリーで、だれが何をできるか
前回は、平らなディスクの上に整ったファイルとフォルダの木を立てました。でも一台のコンピューターを何人もが一緒に使うなら、その木には自分のファイルと他人のファイルが並んでぶら下がっています。だれでも他人のファイルを開いて、変えて、消していいのでしょうか。秩序がなければめちゃくちゃになります。だれが何をできるか、ルールが必要です。
同じツリー、多くの主:ファイルごとの所有者名札
学校のコンピューター一台をクラス全員で使うとしましょう。ファイルの木には、私が作った発表資料も、友だちの課題も、コンピューター自身が使う設定ファイルも、いっしょにぶら下がっています。ルールが一つもなければ、だれでも他人の発表資料を開いて変えたり、まるごと消したりできてしまいます。想像するだけでひやりとしますね。そこでOSはまず、すべてのファイルに所有者の名札を貼ります。このファイルはだれのものか、主はだれかを、はっきり書いておくのです。
ファイルを押して所有者を確認しましょう。自分のものは金色、他人やシステムのものは薄く表示されます。すべてのファイルに主がいます。
これでどのファイルがだれのものか、はっきりしました。でも主を知って終わりではありません。友だちが私の発表資料を開いてただ見るのと、中身を変えたり消したりするのは、まったく別のことですよね。だから所有者の名札だけでは足りず、一つのファイルに対して、どんな行動まで許すのかを、もっと細かく分ける必要があります。その行動が何と何なのか、次で見ましょう。
三つの行動:読み取り、書き込み、実行
ファイルにできることを、OSはちょうど三つと見ます。一つ目、読み取り。ファイルの中身をのぞくことです。二つ目、書き込み。中身を変えたり、まるごと消したりすることです。三つ目、実行。そのファイルがプログラムなら、動かして働かせることです。この三つは、それぞれ別々にオン・オフできます。たとえば、あるファイルは読み取りはできても書き込みは止められていて、見るだけで変えられません。またプログラムのファイルは、実行がオンになって初めて動きます。
読み取り・書き込み・実行を押してオン・オフしてみましょう。オンは緑(許可)、オフは赤(遮断)。三つは別々に決まります。
読み取り、書き込み、実行。この三つのスイッチだけで、かなり細やかな調整ができるようになりました。見ることは許して変えることは止めたり、動かすことだけ許したりできます。でも一つ抜けています。読み取りを許すと言ったとき、いったいだれに許すのでしょう。主にだけ。それとも世界中のすべての人に。同じファイルでも、相手がだれかによって許しは変わるべきです。次で、その相手を分けてみましょう。
だれに?所有者、グループ、その他
OSは人々を三つのまとまりに分けます。一つ目は所有者、そのファイルの主本人です。二つ目はグループ、同じ組にまとめられた人たち。同じ班の友だちと思えばいいです。三つ目はその他、それ以外のすべての人です。そして、さっき見た読み取り・書き込み・実行の三つの行動を、このまとまりごとに別々に決めます。だから同じファイルでも、所有者は読み書きが両方でき、グループは読み取りだけ、その他は何もできない、というふうにできます。権限はこうして、だれと何を交差させて編んだ表になります。
マスを押してオン・オフしてみましょう。行は所有者・グループ・その他、列は読み取り・書き込み・実行です。緑は許可、赤は遮断。同じファイルでも、相手ごとに違う権限。
これで、同じファイルでも相手によって違う権限を与えられるようになりました。かなりきめ細かい秩序です。でもここで、困った場面が一つ浮かびます。すべてのファイルが主にがっちり鍵をかけられていたら、コンピューターに新しいプログラムを入れたり、だれかがパスワードを忘れたときに直したりするのは、だれがするのでしょう。すべての錠を開けられる特別な人が必要に見えます。次で、その人に会ってみましょう。
管理者(ルート):ルールの上に立つ万能の鍵
その特別な人こそが管理者です。英語ではルートやスーパーユーザーと呼ばれます。管理者は、ふつうの権限ルールを飛び越えます。どんなファイルでも読み、変え、実行できる万能の鍵を握っているわけです。おかげで、新しいプログラムを入れ、壊れた設定を直し、忘れたパスワードを決め直せます。でもこの鍵は恐ろしくもあります。管理者として一度のミスで、システム全体を壊しかねないからです。だからふだんは平凡なユーザーとして過ごし、本当に必要なときだけ管理者の権限を借りて使います。
平凡なユーザーで、ロックされたファイルを開いてみましょう。遮断(赤)されます。管理者に切り替えて、もう一度押してみましょう。万能の鍵で許可(緑)されます。
ロックされた扉は、平凡なユーザーには遮られ、管理者には開きました。この万能の鍵があるから、コンピューターを世話し、直せるのです。同時に、なぜむやみに管理者として歩き回ってはいけないのかも感じられたはずです。すべての錠が無力になるからです。権限という秩序は、平凡なユーザーを柵の中に置き、管理者にはその柵を越える力を与えつつ、重く扱うよう設計されています。では、全体を一度にまとめてみましょう。
まとめ:だれ掛ける何、そしてその上の管理者
一枚にまとめると、こうです。共有する木を守るため、OSはすべてのファイルに所有者の名札を貼り、小さな表を一つぶら下げます。横は何を、つまり読み取り・書き込み・実行。縦はだれが、つまり所有者・グループ・その他。マスごとに、許可なら緑、遮断なら赤です。そしてこの表全体の上に、管理者が万能の鍵を持って立っています。平凡なユーザーは表が許す分だけ、管理者は表を飛び越えて何でも。前回の整った木が、いまや安全に共有できる木になったのです。
マスを押して権限の表を見てみましょう。そして管理者に切り替えてみましょう。万能の鍵が表全体を一度に許可に変えます。
でもここで、妙な隙間が一つ見えます。前に、OSはプログラムがハードウェアやディスクを直接さわれないように壁を立てた、と言いましたね。だとすると、私のプログラムは、読み取りを許されたファイルでさえ、どうやって自分で開くのでしょう。じつは開けません。代わりに、OSに丁寧にお願いしなければなりません。次回は、プログラムがOSに仕事をお願いする公式の窓口、システムコールの話を始めます。権限を確かめてくれるのも、まさにその窓口です。