4.5 ファイルのアクセス権

UnixやWindowsのNT系(Windowsにも様々な流派があります)ではマルチタスクに加えて,マルチユーザを実現しています.マルチユーザとは,一台のコンピュータを複数人で共有するための仕組みのことです.マルチユーザを実現するための仕組みとして,ログイン機能と呼ばれるユーザ認証システムが必要となります.また,マルチユーザに対してシングルユーザの場合,コンピュータを使うのは1人なので,そのコンピュータ内にある全てのファイルはユーザ1人の所有物です.しかし,マルチユーザの場合には,1台のコンピュータを複数の人間が利用するために,ファイルに対するアクセス権をコントロールできる仕組みが必要となります.

● 練習問題

以前皆さんは,ホームディレクトリの下にselfintroductionという自分の自己紹介を書いたファイルを作ったはずです.自分のものが存在していることを確認した上で,隣の人の同じselfintroductionファイルの中身をmoreコマンドなどでのぞいてみましょう.

マルチユーザを実現しているOSではこのように他人のファイルを参照することが簡単に出来ます.これは複数の人で共同で作業するときは便利ですが,例えば先ほどのような自己紹介文を見ず知らずの人に見られてしまうのは恥ずかしいですね.このようにファイルによってアクセスできる条件を変えるために,ファイルのアクセス権というものがあります.

アクセス権(access right)とは「誰が」,「何を」,「どうする」という組み合わせに対して, 許可か禁止かを決めたものです.「誰が」は,次の3通りがあります.

グループは CNS の管理者によって決められていて,勝手に変更できません.学生はすべて同じグループのメンバになっています.「どうする」にも3通りがあります.

実行とは,通常ファイルの場合はコマンドとして使う,ディレクトリの場合は cd コマンドでそこへ移動する,ということです.「誰が」と「どうする」の組合わせは3×3=9通りあります.「何を」に相当するファイルとディレクトリごとに,この9通りのそれぞれを許可するか,禁止するかが決まっています.現在のアクセス権の状態を調べるには,ls コマンドに -l オプションを付けます.

% ls -l
total 10615
drwx------  40 t02000tf  student       512 May  1 01:01 Mail
drwx------   2 t02000tf  student       512 Apr  1 18:53 WAppNMC
drwx------   2 t02000tf  student       512 Apr  1 18:53 WDataNMC
drwxrwxrwx   3 t02000tf  student       512 Apr 19 17:00 Wnn6
-rw-r--r--   1 t02000tf  student       153 Apr 20 15:30 test
-rw-r--r--   1 t02000tf  student       150 Apr 20 15:39 test2
%

ファイルに関するいろいろな情報が表示されますが,一番左側にあるのが,種別とアクセス権です.最初の文字は種別で,普通のファイルは「-」,ディレクトリは「d」です.次の9文字は3文字ずつ組になっていて,それぞれ u, g, o の r, w, x が許可されているかを示します.「r」,「w」,「x」は許可,「-」は禁止を示します.

標準設定では,新しく作ったファイルは rw-r--r--,ディレクトリは rwxr-xr-x になりますので,他のユーザは変更はできませんが,内容を見ることはできます.Mail (メールを保存するディレクトリ)は,プライバシーの問題がありますので,rwx------ になっています.

アクセス権の変更

ファイルのアクセス権を変更するには chmod というコマンドを使います.chmod コマンドの最初の引数で,どのように変更するかを指定します.「誰が」(u,g,o)と「どうする」(r,w,x)を「+」または「-」でつなぎます.「+」は許可する,「-」は禁止するということです.
2番目の引数で変更したいファイル名またディレクトリ名を指定します.

例えば test というファイルを自分以外の人が読むことができないようにしたいときは, chmod go-r test と入力します.

% ls -l
total 10615
drwx------  40 t02000tf  student       512 May  1 01:01 Mail
drwx------   2 t02000tf  student       512 Apr  1 18:53 WAppNMC
drwx------   2 t02000tf  student       512 Apr  1 18:53 WDataNMC
drwxrwxrwx   3 t02000tf  student       512 Apr 19 17:00 Wnn6
-rw-r--r--   1 t02000tf  student       153 Apr 20 15:30 test
-rw-r--r--   1 t02000tf  student       150 Apr 20 15:39 test2
% chmod go-r test
% ls -l
total 10615
drwx------  40 t02000tf  student       512 May  1 01:01 Mail
drwx------   2 t02000tf  student       512 Apr  1 18:53 WAppNMC
drwx------   2 t02000tf  student       512 Apr  1 18:53 WDataNMC
drwxrwxrwx   3 t02000tf  student       512 Apr 19 17:00 Wnn6
-rw-------   1 t02000tf  student       153 Apr 20 15:30 test
-rw-r--r--   1 t02000tf  student       150 Apr 20 15:39 test2
%

chmod コマンドを使ったアクセス権の変更のやりかたはもう一通りあります.最初の引数であるアクセス権の指定を3桁の数字の組み合わせで表わすことができます.


● 練習問題

隣の人と組みになり以下のことをやってみましょう.
  1. 自分の作ったファイルの中から一つ(たとえば test)を選んで,そのアクセス権を自分以外の人が内容を見られない(rw-------)ようにしなさい.
  2. 隣の人の rw------- のテキストファイルの内容を more コマンドで見てみなさい.
  3. 隣の人の rw-r--r-- のテキストファイルの内容を emacs で編集してみなさい.
  4. 隣の人の rwx------ のディレクトリの内容を ls コマンドで表示してみなさい.
注意
今回の授業では,Windows,UNIX両方にログインしています.授業が終って帰る時は,必ず両方ともログアウトが完了しているかどうかCPU切替機で確認しましょう.