[小西ホームページ]   [目次・索引]   [前の授業]   [次の授業]

コンピュータIID(UNIXとHTML)第7回

目次
7.1 ファイルのアクセス権
7.1.1 マルチユーザ・システム
7.1.2 アクセス権の種類
7.1.3 アクセス権の表示
7.1.4 アクセス権の変更
7.1.5 スーパーユーザ
7.2 ファイルの管理(1)
7.2.1 ファイルの情報
7.2.2 ファイルの整列
7.2.3 隠しファイル
7.3 演習7
7.4 レポート課題
7.5 参考文献
索引

7.1 ファイルのアクセス権

7.1.1 マルチユーザ・システム

UNIXの特徴の一つは、マルチユーザ・システムであることです。 つまり、UNIXは、一人だけが使うのではなく、複数の人が利用する仕組みを持ったシステムなのです。

UNIXでは、利用者を ユーザ と呼びます。 それぞれのユーザには、識別のための名前が付きます。 これを、 ユーザ名 または ログイン名 と呼びます。 東京女子大学のシステムでは、ユーザ名は学生番号です。

UNIXは皆で使うシステムなので、ファイルやディレクトリを好き勝手に格納すると混乱してしまいます。 そのため、一人のユーザに一つのディレクトリを用意し、ユーザはその中だけ自由に使えるようにします。 これが、ホーム・ディレクトリです。 東京女子大学のシステムでは、ホーム・ディレクトリは /Users/ username です。

また、ファイルやディレクトリには、 所有者 が決まっています。 つまり、自分のファイルと他人のファイルの区別がつけられるのです。 一般的には、ファイルやディレクトリを作成したユーザが、その所有者になります。

UNIXには、 グループ という概念もあります。 これは、ユーザの集まりを表しています。 例えば、サークル活動のためのグループを作成して、そこに会員を登録することができます。 一人のユーザが、複数のグループに登録されることもあります。

ファイルやディレクトリには、所有者だけではなく、 所有グループ も決まっています。 このファイルは何々グループの物、このディレクトリは何々グループの物、という具合です。

7.1.2 アクセス権の種類

マルチユーザ・システム、すなわち皆で使うシステムでは、自分のファイルが他人から勝手に読み書きされることが、心配になります。 たとえ、ファイルをホーム・ディレクトリに格納しても、ファイルの所有者を決定しても、安心はできません。 解決方法は、「このファイルは、所有者は読み書きできるが、その他の人は読むことしかできない」というような設定することです。 このような、読み書きに関する権利のことを、 アクセス権 あるいは パーミッション と呼びます。

ファイルのアクセス権には、次のような種類があります。

ここで、ファイルを実行することは、プログラム・ファイルを意図しています。

この3種類の権利が、所有者に対して、所有グループに対して、そしてその他のユーザに対して設定できます。 つまり、3×3=9通りの権利が設定できるのです。

ディレクトリについても、次のようなアクセス権があります。

ここで、ディレクトリを読み込むとは、登録されているファイルをリスト・アップすることです。 ディレクトリに書き込むとは、新たにファイルを登録したり、登録されているファイルを削除したりすることです。

ファイルの場合と同様に、これらの権利が、所有者、所有グループ、そしてその他のユーザに対して設定できます。

7.1.3 アクセス権の表示

それでは、実際にアクセス権を確認します。 アクセス権を表示するには、ディレクトリの登録内容を表示するコマンド ls で、オプション -l を使います。 つまり、

ls -l directory

と入力します。

b04a001@AsiaA1:~% cd comp2d
b04a001@AsiaA1:~/comp2d% ls -l
total 17
drwxr-xr-x  2 b04a001 cis  512 11  1 13:45 France/
drwxr-xr-x  2 b04a001 cis  512 11  1 13:45 Germany/
-rw-r--r--  1 b04a001 cis   42 10 18 14:00 english01.txt
-rw-r--r--  1 b04a001 cis   13 10 25 14:15 japanese01.txt
-rw-r--r--  1 b04a001 cis   86 10  4 13:45 month01.txt
-rw-r--r--  1 b04a001 cis   55 10  4 14:00 score01.txt
-rw-r--r--  1 b04a001 cis  170 10 11 14:00 weather01.txt
b04a001@AsiaA1:~/comp2d%

3列目は所有者、4列目は所有グループを表します。 この場合は、すべてがユーザ b04a001 のもので、グループ cis のものです。 なお、グループ cis は、情報処理センターを意味します。

1列目の記号10個が、アクセス権を表します。 記号の意味は、以下の通りです。 ただし、一番左は、ディレクトリなら"d"で、普通のファイルなら"-"です。

表 7.1  アクセス権を表す記号と数値
記号 数値 アクセス権
-r-------- 400 所有者の読み込み
--w------- 200 所有者の書き込み
---x------ 100 所有者の実行
----r----- 040 所有グループの読み込み
-----w---- 020 所有グループの書き込み
------x--- 010 所有グループの実行
-------r-- 004 その他の読み込み
--------w- 002 その他の書き込み
---------x 001 その他の実行

例えば、ファイル month01.txt のアクセス権は -rw-r--r-- なので、だれでも読み込めますが、書き込めるのは所有者のみです。 また、ディレクトリ France のアクセス権は drwxr-xr-x なので、だれでも読み込め、だれでも移動もできますが、書き込めるのは所有者のみです。

特定のファイルのアクセス権を表示するには、そのファイルを引数に書きます。

b04a001@AsiaA1:~/comp2d% ls -l month01.txt
-rw-r--r--  1 b04a001 cis  86 10  4 13:45 month01.txt
b04a001@AsiaA1:~/comp2d%

ディレクトリについて同様にしますと、そのディレクトリの内容が表示されてしまいます。

b04a001@AsiaA1:~/comp2d% ls -l France
total 2
-rw-r--r--  1 b04a001 cis  26 11  1 14:00 Lyon.txt
-rw-r--r--  1 b04a001 cis  31 11  1 14:00 Marseille.txt
b04a001@AsiaA1:~/comp2d%

ディレクトリの内容ではなく、ディレクトリ自体を表示するには、

ls -d directory

とします。

b04a001@AsiaA1:~/comp2d% ls -ld France
drwxr-xr-x  2 b04a001 cis  512 11  1 13:45 France/
b04a001@AsiaA1:~/comp2d%

7.1.4 アクセス権の変更

ファイルやディレクトリのアクセス権は、適切な値に自動的に設定されます。 必要があれば、自分のファイルやディレクトリのアクセス権を変更できます。 例えば、他人に読まれたくないファイルならば、他人の読み込みを禁止できます。 また、うっかり書き換えたくないファイルならば、全員の書き込みを禁止できます。

chmodコマンド (CHange MODe)は、ファイルやディレクトリのアクセス権を変更します。 形式は、

chmod mode file

です。 ここで、 mode は3桁の数です。 これは、上記の表にしたがって、設定したい権利を合計した値です。

例として、以下の内容のファイル secret01.txt を作成します。 名前の部分は、自分の名前にしてください。

This is Azuma's secret text.

このファイルは秘密と言っていますが、皆でお互いに公開してみます。 アクセス権は、自分は読み書きでき(400+200)、他人は読める(40+4)ようにしますので、644 となります。

b04a001@AsiaA1:~/comp2d% chmod 644 secret01.txt
b04a001@AsiaA1:~/comp2d% ls -l secret01.txt
-rw-r--r--  1 b04a001 cis  29 11  8 13:45 secret01.txt
b04a001@AsiaA1:~/comp2d%

実際、自分のファイルは読めますし、他人(友達かkonishi)のファイルも読めます。

b04a001@AsiaA1:~/comp2d% cat secret01.txt
This is Azuma's secret text.
b04a001@AsiaA1:~/comp2d% cat /Users/konishi/comp2d/secret01.txt
This is Konishi's secret text.
b04a001@AsiaA1:~/comp2d%

では、このファイルを皆でお互いに秘密にします。 アクセス権は、自分は読み書きできる(400+200)ようにしますので、600 となります。

b04a001@AsiaA1:~/comp2d% chmod 600 secret01.txt
b04a001@AsiaA1:~/comp2d% ls -l secret01.txt
-rw-------  1 b04a001 cis  29 11  8 13:45 secret01.txt
b04a001@AsiaA1:~/comp2d%

すると、自分のファイルは読めますが、他人のファイルは読めなくなります。

b04a001@AsiaA1:~/comp2d% cat secret01.txt
This is Azuma's secret text.
b04a001@AsiaA1:~/comp2d% cat /Users/konishi/comp2d/secret01.txt
cat: /Users/konishi/comp2d/secret01.txt: Permission denied
b04a001@AsiaA1:~/comp2d%

なお、ファイルのアクセス権の表示・変更は、Finderでもできます。 ファイルのアイコンをクリックして、メニューバーの「ファイル」をクリックして、「情報を見る」を選択してください。 「所有権とアクセス権」の項目を開けば、アクセス権の操作ができます。

注意: ホーム・ディレクトリや最初からあるディレクトリには、適切なアクセス権が設定されています。 これらをむやみに変更しますと、パソコンが動かなくなる可能性があります。 アクセス権を変更するのは、自分で作成したファイルやディレクトリだけにしてください。

7.1.5 スーパーユーザ

UNIXでは、システム管理者のために、特別なユーザが用意されています。 それが、 スーパーユーザ です。 スーパーユーザのユーザ名は"root"なので、スーパーユーザのことを ルート と呼ぶこともあります。

スーパーユーザは、アクセス権を超越した存在です。 ファイルのアクセス権がどう設定されていても、スーパーユーザはそのファイルを読み書きできます。 システムを管理するには、このような権利が必要なのです。

スーパーユーザは、以下のような作業を行っています。 このような内容は、スーパーユーザにお願いすればよいのです。


7.2 ファイルの管理(1)

7.2.1 ファイルの情報

ファイルのアクセス権を表示するとき、コマンド ls -l を実行しました。 このとき、アクセス権だけではなく、他の情報も表示されました。 この情報の意味について説明します。

b04a001@AsiaA1:~/comp2d% ls -l
total 17
drwxr-xr-x  2 b04a001 cis  512 11  1 13:45 France/
drwxr-xr-x  2 b04a001 cis  512 11  1 13:45 Germany/
-rw-r--r--  1 b04a001 cis   42 10 18 14:00 english01.txt
-rw-r--r--  1 b04a001 cis   13 10 25 14:15 japanese01.txt
-rw-r--r--  1 b04a001 cis   86 10  4 13:45 month01.txt
-rw-r--r--  1 b04a001 cis   55 10  4 14:00 score01.txt
-rw-r--r--  1 b04a001 cis  170 10 11 14:00 weather01.txt
b04a001@AsiaA1:~/comp2d%

5列目は、ファイル・サイズです。 単位はバイトです。 6列目から8列目は、最終更新日時です。 一度も更新されていない場合は、作成日時となります。 9列目は、ファイル名やディレクトリ名です。

なお、Finderを使っても、同じような情報が得られます。 表示形式をリストに切り替えてください。

7.2.2 ファイルの整列

特に指定しなければ、lsコマンドは、ファイルをアルファベット順に並べます。 他の順番で並べるには、オプションを使います。

まず、逆順にするには、

ls -r directory

と入力します。

b04a001@AsiaA1:~/comp2d% ls -lr
total 17
-rw-r--r--  1 b04a001 cis  170 10 11 14:00 weather01.txt
-rw-r--r--  1 b04a001 cis   55 10  4 14:00 score01.txt
-rw-r--r--  1 b04a001 cis   86 10  4 13:45 month01.txt
-rw-r--r--  1 b04a001 cis   13 10 25 14:15 japanese01.txt
-rw-r--r--  1 b04a001 cis   42 10 18 14:00 english01.txt
drwxr-xr-x  2 b04a001 cis  512 11  1 13:45 Germany/
drwxr-xr-x  2 b04a001 cis  512 11  1 13:45 France/
b04a001@AsiaA1:~/comp2d%

新しい順にするには、コマンド

ls -t directory

を実行します。

b04a001@AsiaA1:~/comp2d% ls -lt
total 17
drwxr-xr-x  2 b04a001 cis  512 11  1 13:45 France/
drwxr-xr-x  2 b04a001 cis  512 11  1 13:45 Germany/
-rw-r--r--  1 b04a001 cis   13 10 25 14:15 japanese01.txt
-rw-r--r--  1 b04a001 cis   42 10 18 14:00 english01.txt
-rw-r--r--  1 b04a001 cis  170 10 11 14:00 weather01.txt
-rw-r--r--  1 b04a001 cis   55 10  4 14:00 score01.txt
-rw-r--r--  1 b04a001 cis   86 10  4 13:45 month01.txt
b04a001@AsiaA1:~/comp2d%

この2つを組み合わせますと、古い順になります。

b04a001@AsiaA1:~/comp2d% ls -ltr
total 17
-rw-r--r--  1 b04a001 cis   86 10  4 13:45 month01.txt
-rw-r--r--  1 b04a001 cis   55 10  4 14:00 score01.txt
-rw-r--r--  1 b04a001 cis  170 10 11 14:00 weather01.txt
-rw-r--r--  1 b04a001 cis   42 10 18 14:00 english01.txt
-rw-r--r--  1 b04a001 cis   13 10 25 14:15 japanese01.txt
drwxr-xr-x  2 b04a001 cis  512 11  1 13:45 Germany/
drwxr-xr-x  2 b04a001 cis  512 11  1 13:45 France/
b04a001@AsiaA1:~/comp2d%

Finderを使ってファイルを整列するには、表示形式をリストに切り替えてから、整列したい項目の見出しをクリックします。 さらにクリックしますと、昇順と降順が切り替わります。

7.2.3 隠しファイル

本当は存在するのに、普通は一覧に表示されないファイルは、 隠しファイル と呼ばれます。 消されるとシステムが動かなくなるシステム・ファイルや、ユーザが開いても意味がない設定ファイルなどが、隠しファイルになります。 UNIXでは、"."から始まるファイル名が隠されます。

ファイルの一覧表示で、隠しファイルも表示するには、

ls -a directory

とします。

b04a001@AsiaA1:~/comp2d% ls -a
./               ._japanese01.txt  France/         month01.txt
../              ._month01.txt     Germany/        score01.txt
.DS_Store        ._score01.txt     english01.txt   weather01.txt
._english01.txt  ._weather01.txt   japanese01.txt
b04a001@AsiaA1:~/comp2d%

ここで、"."はそのディレクトリ、".."は一つ上のディレクトリを表します。 この2つのディレクトリは消せません。

ファイル.DS_Storeと、"._"から始まるファイル名は、Macに固有の設定ファイルです。 Mac以外では無意味です。

なお、Finderで隠しファイルを表示することは、できないようです。


7.3 演習7

以下の内容のファイル private01.txt を作成してください。 このファイルは、変更したくない個人ファイルのつもりです。

This is a private text.

以下の内容のファイル protected01.txt を作成してください。 このファイルは、変更したくない公開ファイルのつもりです。

This is a protected text.

そして、以下のようになるように、ファイルのアクセス権を変更してください。

b04a001@AsiaA1:~/comp2d% ls -l private01.txt
-r--------  1 b04a001 cis  24 11  8 14:15 private01.txt
b04a001@AsiaA1:~/comp2d% ls -l protected01.txt
-r--r--r--  1 b04a001 cis  26 11  8 14:15 protected01.txt
b04a001@AsiaA1:~/comp2d%

余力のある人は、以下の内容のファイル common01.txt を作成してください。 このファイルは、グループ内で共同編集するファイルのつもりです。

This is a common text.

そして、以下のようになるように、ファイルのアクセス権を変更してください。

b04a001@AsiaA1:~/comp2d% ls -l common01.txt
-rw-rw----  1 b04a001 cis  23 11  8 14:15 common01.txt
b04a001@AsiaA1:~/comp2d%

7.4 レポート課題

今日の演習7の答案(「ターミナル」画面のコピー)をメールでkonishi@twcu.ac.jp宛に提出してください。 メールを送るときは、大学のパソコンを使うか、大学のメール・サーバに接続するかして、差出人が大学のメール・アドレスになるようにしてください。 メールの本文には、学生番号、氏名、科目名、授業日(11月8日)を明記してください。


7.5 参考文献


[小西ホームページ]   [目次・索引]   [前の授業]   [次の授業]

2006年11月8日更新
小西 善二郎 <konishi@twcu.ac.jp>
Copyright (C) 2006 Zenjiro Konishi. All rights reserved.