目次 | 索引 |
---|---|
今皆さんが使っているシステムはUNIXとよばれているものの一種です。 UNIXを特徴付ける性質として、 マルチユーザシステム ( multi-user system )であることがあげられます。 マルチユーザシステムとは、複数の人が利用するための機能を備えたシステムのことです。 マルチユーザシステムの機能のおかげで、同じコンピュータを使っているにもかかわらず、
などといった保護がなされています。 ここでは、この保護機能について説明します。
UNIXでは、すべてのファイルとディレクトリに 所有者 ( owner )があります。 つまり、ファイルとディレクトリは必ず誰かのものだということです。 ファイルやディレクトリの所有者は、コマンド ls -l や ls -l file を用いると確認できます。 ( ls -l は、ファイルとディレクトリに関する詳しい情報を表示するコマンドです。)
b00a001@Ampere:~% ls Mail/ Maildir/ WABI/ WWW-local/ b00a001@Ampere:~% ls -l 合計 55 drwx------ 5 b00a001 other 512 4月 3日 03:07 Mail/ drwx------ 5 b00a001 other 512 4月 3日 03:08 Maildir/ drwxrwxrwx 5 root other 512 4月 3日 03:09 WABI/ drwxr-xr-x 3 b00a001 school 512 7月 13日 10:04 WWW-local/ b00a001@Ampere:~% ls -l WWW-local/ip2a/ex1.html -rw-r--r-- 1 b00a001 school 46 4月 18日 09:45 WWW-local/ip2a/ex1.html b00a001@Ampere:~%
このうち、左から3番目が所有者を示します。 つまり、ファイル ex1.html はユーザ b00a001 のものだということです。
なお、左から4番目は所有グループを示します。 グループ ( group )とは、システム管理者が定めたユーザの集まりです。
前述の、友達の作ったホームページ(HTMLファイル)が読めるけれど書き換えできない理由は、システムがユーザに読む権利を与え、書く権利を与えなかったからです。 このような権利を、 アクセス権 ( permission )とよびます。
ファイルに対しては、次の3種類のアクセス権があります。
ここで、ファイルを削除する権利は書き込み権に含まれます。 また、実行権はプログラムなどのファイルを想定しています。
ディレクトリに対しては、次の3種類のアクセス権があります。
これらのアクセス権が、所有者に対して、所有グループの人に対して、そしてその他の人に対して定まっています。 つまり、アクセス権は全部で9個あるわけです。 この9個をまとめてアクセス権モードとよびます。
前述の ls -l コマンドで、ファイルやディレクトリのアクセス権が確認できます。
b00a001@Ampere:~% ls -l 合計 55 drwx------ 5 b00a001 other 512 4月 3日 03:07 Mail/ drwx------ 5 b00a001 other 512 4月 3日 03:08 Maildir/ drwxrwxrwx 5 root other 512 4月 3日 03:09 WABI/ drwxr-xr-x 3 b00a001 school 512 7月 13日 10:04 WWW-local/ b00a001@Ampere:~% ls -l WWW-local/ip2a/ex1.html -rw-r--r-- 1 b00a001 school 46 4月 18日 09:45 WWW-local/ip2a/ex1.html b00a001@Ampere:~%
一番左の10文字からなる文字列の、2文字目から10文字目までがアクセス権モードを示しています。 2, 3, 4文字目が所有者に対するr, w, xアクセス権、5, 6, 7文字目が所有グループの人に対するr, w, xアクセス権、8, 9, 10文字目がその他の人に対するr, w, xアクセス権です。 マイナス(-)は権利なしを意味します。
例えば、ファイル ex1.html は、読み出しは誰でもできるが、書き込みは所有者のみできるということです。 また、ディレクトリ Mail に対しては、所有者は何でもできるが、所有者以外は何もできないとなります。
これではじめの保護機能が説明できます。
b00a001@Ampere:~% ls -l WWW-local/ip2a/ex1.html -rw-r--r-- 1 b00a001 school 46 4月 18日 09:45 WWW-local/ip2a/ex1.html b00a001@Ampere:~% ls -l Mail/inbox/1 -rw------- 1 b00a001 school 1482 4月 13日 10:25 Mail/inbox/1 b00a001@Ampere:~%
ホームページ(HTMLファイル)ex1.html は、すべての人に読み出し権が与えられていますので、友達も読めるのですが、書き込み権は所有者のみですので、友達は書き換えたり消したりできないのです。 また、1番のメール 1 は、所有者以外にアクセス権が与えられていませんので、友達は読むことすらできないのです。
ファイルやディレクトリのアクセス権は自分で変更できます。 これは、コマンド chmod mode file によって行います。 ここで mode は、アクセス権モードを示す3けたの数です。 この3けたの数の作り方は次の通りです。 はじめに、アクセス権r, w, xを表にしたがって数に置き換えます。 (2進数を知っていれば、この対応はすぐ理解できるでしょう。)
アクセス権 | 数 |
---|---|
--- | 0 |
--x | 1 |
-w- | 2 |
-wx | 3 |
r-- | 4 |
r-x | 5 |
rw- | 6 |
rwx | 7 |
そして、所有者に対して、所有グループの人に対して、その他の人に対してのそれぞれのアクセス権に対応する数を並べて3けたの数を構成します。
例えば、
b00a001@Ampere:~% cd WWW-local b00a001@Ampere:~/WWW-local% cd ip2a b00a001@Ampere:~/WWW-local/ip2a% ls -l ex1.html -rw-r--r-- 1 b00a001 school 46 4月 18日 09:45 ex1.html b00a001@Ampere:~/WWW-local/ip2a% chmod 600 ex1.html b00a001@Ampere:~/WWW-local/ip2a% ls -l ex1.html -rw------- 1 b00a001 school 46 4月 18日 09:45 ex1.html b00a001@Ampere:~/WWW-local/ip2a% chmod 444 ex1.html b00a001@Ampere:~/WWW-local/ip2a% ls -l ex1.html -r--r--r-- 1 b00a001 school 46 4月 18日 09:45 ex1.html b00a001@Ampere:~/WWW-local/ip2a%
はじめの変更で、ファイル ex1.html は所有者以外の人が読めなくなります。 (他人に読まれたくないファイルもあるでしょう。) 次の変更で、このファイルは所有者が消したり書き込んだりできなくなります。 (間違って消してしまいたくない場合に有効です。 消したくなったら、アクセス権モードをもとに戻せばよいのです。)
なお、特に指定しないならば、新規のファイルやディレクトリのアクセス権モードは次のように決められます。
したがって、普通に使っているうちは、アクセス権モードにそれほど気を遣う必要はありません。
UNIXでは、 スーパーユーザ ( super-user )とよばれる特別なユーザが存在します。 スーパーユーザのユーザ名は、通常 root ですので、ルートともよばれます。
スーパーユーザはアクセス権を超えた存在で、システムに関するあらゆる権利を持っています。 たとえファイルのアクセス権モードが 000(所有者すら読み書きできない)であっても、スーパーユーザなら読んだり消したりできます。
システム管理者の業務のひとつに、ユーザの登録や削除があります。 管理者は、必要に応じてスーパーユーザに切り替わり、新入生に必要なファイルを用意したり、卒業生のファイルを抹消したりしているのです。
前回の授業では、ディレクトリを用いることによって、ファイルが分類できることを説明しました。 HTMLファイルや画像ファイルもファイルの一種ですので、ファイルを整理する目的で、ディレクトリを利用することができます。 ただし、ファイルを別のディレクトリに移動しただけでは、以下のタグやプロパティに問題が起ります。
<img src="
file
">
background-image: url(
file
)
<a href="
file
">
〜
</a>
<frame src="
file
">
これらのタグやプロパティは、ファイル file が同じディレクトリにある場合の書き方です。 今までは、授業用のディレクトリ ip2a にすべてのファイルを置きましたので、これでよかったのです。 別のディレクトリにファイルを置いた場合は次のようになります。
<img src="
path
">
background-image: url(
path
)
<a href="
path
">
〜
</a>
<frame src="
path
">
ここで path は、HTMLドキュメントのファイルが置いてあるディレクトリをカレントディレクトリと見なしたときの、ファイルの相対パス名です。 カレントディレクトリにあるファイルの相対パス名は、ファイル名そのものですので、これらは今までの書き方を拡張したものと考えられます。 パス名の書き方の具体例は、次の小節を参考にしてください。
なお、情報処理Iでは
<a href="http://www-local.twcu.ac.jp/~b00a002/index.html"> B子のホームページ </a>
などと書いて、友達のホームページへリンクを張ったと思います。 この
http://www-local.twcu.ac.jp/~b00a002/index.html
のような文字列がURL(またはURI)とよばれるものであることは、すでに知っていると思います。 今日の授業では、URLではなく相対パス名を用いることにします。 URLの詳細やURLと相対パス名との関係、相対パス名の利点などについては、次の次の授業で議論します。
階層的ディレクトリを利用して、HTMLファイルや画像ファイルを分類、整理することは、それほど単純な作業ではありません。 きちんとした方針を定めておかないと、ファイルが増えるにつれて、どこに何があるのか分からなくなってしまいます。
有用な方針のひとつに、「表現対象に階層構造があれば、それをディレクトリの構造に反映させる。」があげられます。 この方針に従ったホームページの作成例を、以下に示します。
ここで、「東京都ガイド」というホームページの作成について考えます。 これは、都内の観光地を紹介するもので、紹介する観光地は順次増やしていく予定とします。 最初の観光地を東京女子大学とし、次のようにホームページを作成したとします。
: | ip2a | +-------------+-------------+-------------+-------------+ | | | | | ex1.html ex1.html~ suginami.html tokyo.html twcu.html
<h1>東京都ガイド</h1> <p> 東京都のお勧めスポットは <a href="suginami.html">杉並区</a> です。 </p>
<h1>杉並区ガイド</h1> <p> 杉並区は <a href="tokyo.html">東京都</a> にあります。 杉並区のお勧めスポットは <a href="twcu.html">東京女子大学</a> です。 </p>
<h1>東京女子大学ガイド</h1> <p> 東京女子大学は <a href="suginami.html">杉並区</a> にあります。 </p>
この段階では、ファイルの管理について特に問題はありません。 しかし、観光地を増やしていくにつれて、ディレクトリ ip2a には、市区町村のHTMLファイル、観光地のHTMLファイル、そして練習用のHTMLファイル(ex1.html など)が混在することになり、だんだんファイルが探しにくくなることが予想されます。
そこで、「市区町村→観光地」という階層構造を利用して、次のようにファイルを整理することにします。
: | ip2a | +-------------+-------------+ | | | ex1.html ex1.html~ tokyo | +-------------+ | | suginami tokyo.html | +-------------+ | | suginami.html twcu | + | twcu.html
端末エミュレータを用いてこの操作を行うには、次のようにします。
b00a001@Ampere:~% cd WWW-local b00a001@Ampere:~/WWW-local% cd ip2a b00a001@Ampere:~/WWW-local/ip2a% mkdir tokyo b00a001@Ampere:~/WWW-local/ip2a% cd tokyo b00a001@Ampere:~/WWW-local/ip2a/tokyo% mkdir suginami b00a001@Ampere:~/WWW-local/ip2a/tokyo% cd suginami b00a001@Ampere:~/WWW-local/ip2a/tokyo/suginami% mkdir twcu b00a001@Ampere:~/WWW-local/ip2a/tokyo/suginami% cd .. b00a001@Ampere:~/WWW-local/ip2a/tokyo% cd .. b00a001@Ampere:~/WWW-local/ip2a% mv tokyo.html tokyo/tokyo.html b00a001@Ampere:~/WWW-local/ip2a% mv suginami.html tokyo/suginami/suginami.html b00a001@Ampere:~/WWW-local/ip2a% mv twcu.html tokyo/suginami/twcu/twcu.html
これで、ファイルが増えても大丈夫になりました。 例えば、東京女子大学の写真を撮って twcu.jpg というファイルにしたならば、それをディレクトリ twcu の中に置きます。 観光地を増やすには、杉並区内ならばディレクトリ suginami の中に対応するディレクトリを作成します。 杉並区外ならば、いったんその市区町村のディレクトリを作成し、そしてその中に対応するディレクトリを作成します。
ファイルの整理はできましたが、ファイルを移動してしまいましたので、リンク
はすべて無効になっています。 ディレクトリの構造
: | ip2a | +-------------+-------------+ | | | ex1.html ex1.html~ tokyo | +-------------+ | | suginami tokyo.html | +-------------+ | | suginami.html twcu | + | twcu.html
から相対パス名を求めますと、
となりますので、HTMLファイルを以下のように変更して、リンクを回復します。
<h1>東京都ガイド</h1> <p> 東京都のお勧めスポットは <a href="suginami/suginami.html">杉並区</a> です。 </p>
<h1>杉並区ガイド</h1> <p> 杉並区は <a href="../tokyo.html">東京都</a> にあります。 杉並区のお勧めスポットは <a href="twcu/twcu.html">東京女子大学</a> です。 </p>
<h1>東京女子大学ガイド</h1> <p> 東京女子大学は <a href="../suginami.html">杉並区</a> にあります。 </p>
東京都以外の観光地を一か所考え、上記の要領で階層構造を反映した階層的ディレクトリを構成し、一つ上と一つ下の階層にリンクを張ったホームページを作成してください。
href
属性の値は、URLではなく、相対パス名とします。
ファイルを移動するよりは、あらかじめディレクトリを作成しておき、そこにファイルを作成するほうが簡単です。
類似する階層構造を持つのでしたら、観光地でなくてもかまいません。 例えば、「リーグ→チーム」という階層構造で、スポーツ選手を紹介することなどが考えられます。
: | ip2a | +-------------+-------------+ | | | chiba ex1.html ex1.html~ | +-------------+ | | chiba.html urayasu | +-------------+ | | tdl urayasu.html | + | tdl.html
今日の演習10に従ってホームページを作成し、そのファイル名をkonishi@twcu.ac.jpあてにメールで報告してください。 メールには、学生番号、氏名、科目名、授業の日付け(6/20)を明記してください。