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

情報処理IIA(HTML入門)第10回

目次 索引
10.1 ファイルのアクセス権
10.1.1 マルチユーザシステム
10.1.2 ファイルの所有者
10.1.3 ファイルのアクセス権
10.1.4 アクセス権の変更
10.1.5 スーパーユーザ
10.2 HTMLにおけるパス名
10.2.1 パス名の書き方
10.2.2 階層的なホームページ
10.3 演習10
10.4 レポート課題
アクセス権  グループ  所有者  スーパーユーザ  マルチユーザシステム 

10.1 ファイルのアクセス権

10.1.1 マルチユーザシステム

今皆さんが使っているシステムはUNIXとよばれているものの一種です。 UNIXを特徴付ける性質として、 マルチユーザシステムmulti-user system )であることがあげられます。 マルチユーザシステムとは、複数の人が利用するための機能を備えたシステムのことです。 マルチユーザシステムの機能のおかげで、同じコンピュータを使っているにもかかわらず、

などといった保護がなされています。 ここでは、この保護機能について説明します。

10.1.2 ファイルの所有者

UNIXでは、すべてのファイルとディレクトリに 所有者owner )があります。 つまり、ファイルとディレクトリは必ず誰かのものだということです。 ファイルやディレクトリの所有者は、コマンド ls -lls -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 )とは、システム管理者が定めたユーザの集まりです。

10.1.3 ファイルのアクセス権

前述の、友達の作ったホームページ(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 は、所有者以外にアクセス権が与えられていませんので、友達は読むことすらできないのです。

10.1.4 アクセス権の変更

ファイルやディレクトリのアクセス権は自分で変更できます。 これは、コマンド chmod   mode   file によって行います。 ここで mode は、アクセス権モードを示す3けたの数です。 この3けたの数の作り方は次の通りです。 はじめに、アクセス権r, w, xを表にしたがって数に置き換えます。 (2進数を知っていれば、この対応はすぐ理解できるでしょう。)

表 10.1  アクセス権と数の対応
アクセス権
--- 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 は所有者以外の人が読めなくなります。 (他人に読まれたくないファイルもあるでしょう。) 次の変更で、このファイルは所有者が消したり書き込んだりできなくなります。 (間違って消してしまいたくない場合に有効です。 消したくなったら、アクセス権モードをもとに戻せばよいのです。)

なお、特に指定しないならば、新規のファイルやディレクトリのアクセス権モードは次のように決められます。

したがって、普通に使っているうちは、アクセス権モードにそれほど気を遣う必要はありません。

10.1.5 スーパーユーザ

UNIXでは、 スーパーユーザsuper-user )とよばれる特別なユーザが存在します。 スーパーユーザのユーザ名は、通常 root ですので、ルートともよばれます。

スーパーユーザはアクセス権を超えた存在で、システムに関するあらゆる権利を持っています。 たとえファイルのアクセス権モードが 000(所有者すら読み書きできない)であっても、スーパーユーザなら読んだり消したりできます。

システム管理者の業務のひとつに、ユーザの登録や削除があります。 管理者は、必要に応じてスーパーユーザに切り替わり、新入生に必要なファイルを用意したり、卒業生のファイルを抹消したりしているのです。


10.2 HTMLにおけるパス名

10.2.1 パス名の書き方

前回の授業では、ディレクトリを用いることによって、ファイルが分類できることを説明しました。 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と相対パス名との関係、相対パス名の利点などについては、次の次の授業で議論します。

10.2.2 階層的なホームページ

階層的ディレクトリを利用して、HTMLファイルや画像ファイルを分類、整理することは、それほど単純な作業ではありません。 きちんとした方針を定めておかないと、ファイルが増えるにつれて、どこに何があるのか分からなくなってしまいます。

有用な方針のひとつに、「表現対象に階層構造があれば、それをディレクトリの構造に反映させる。」があげられます。 この方針に従ったホームページの作成例を、以下に示します。

ここで、「東京都ガイド」というホームページの作成について考えます。 これは、都内の観光地を紹介するもので、紹介する観光地は順次増やしていく予定とします。 最初の観光地を東京女子大学とし、次のようにホームページを作成したとします。

                    :
                    |
                  ip2a
                    |
      +-------------+-------------+-------------+-------------+
      |             |             |             |             |
  ex1.html      ex1.html~   suginami.html  tokyo.html     twcu.html
tokyo.html
<h1>東京都ガイド</h1>
<p>
東京都のお勧めスポットは
<a href="suginami.html">杉並区</a>
です。
</p>
東京都ガイド

東京都のお勧めスポットは 杉並区 です。
suginami.html
<h1>杉並区ガイド</h1>
<p>
杉並区は
<a href="tokyo.html">東京都</a>
にあります。
杉並区のお勧めスポットは
<a href="twcu.html">東京女子大学</a>
です。
</p>
杉並区ガイド

杉並区は 東京都 にあります。 杉並区のお勧めスポットは 東京女子大学 です。
twcu.html
<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
  1. 「東京都ガイド」のディレクトリ tokyo を作成します。
  2. このディレクトリの中に、市区町村のディレクトリ(この段階では suginami のみ)を作成します。
  3. 市区町村のディレクトリの中に、観光地のディレクトリ(この段階では twcu のみ)を作成します。
  4. 「東京都ガイド」のトップページ tokyo.html はディレクトリ tokyo の中に置きます。
  5. 市区町村のHTMLファイル(この段階では suginami.html のみ)は、対応する市区町村のディレクトリの中に置きます。
  6. 観光地のHTMLファイル(この段階では 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ファイルを以下のように変更して、リンクを回復します。

tokyo.html
<h1>東京都ガイド</h1>
<p>
東京都のお勧めスポットは
<a href="suginami/suginami.html">杉並区</a>
です。
</p>
suginami.html
<h1>杉並区ガイド</h1>
<p>
杉並区は
<a href="../tokyo.html">東京都</a>
にあります。
杉並区のお勧めスポットは
<a href="twcu/twcu.html">東京女子大学</a>
です。
</p>
twcu.html
<h1>東京女子大学ガイド</h1>
<p>
東京女子大学は
<a href="../suginami.html">杉並区</a>
にあります。
</p>

10.3 演習10

東京都以外の観光地を一か所考え、上記の要領で階層構造を反映した階層的ディレクトリを構成し、一つ上と一つ下の階層にリンクを張ったホームページを作成してください。 href 属性の値は、URLではなく、相対パス名とします。 ファイルを移動するよりは、あらかじめディレクトリを作成しておき、そこにファイルを作成するほうが簡単です。

類似する階層構造を持つのでしたら、観光地でなくてもかまいません。 例えば、「リーグ→チーム」という階層構造で、スポーツ選手を紹介することなどが考えられます。

例 10.1 
                    :
                    |
                  ip2a
                    |
      +-------------+-------------+
      |             |             |
    chiba       ex1.html      ex1.html~
      |
      +-------------+
      |             |
 chiba.html      urayasu
                    |
      +-------------+
      |             |
     tdl      urayasu.html
      |
      +
      |
  tdl.html
chiba.html
千葉県ガイド

千葉県のお勧めスポットは 浦安市 です。
urayasu.html
浦安市ガイド

浦安市は 千葉県 にあります。 浦安市のお勧めスポットは 東京ディズニーランド です。
tdl.html
東京ディズニーランドガイド

東京ディズニーランドは 浦安市 にあります。

10.4 レポート課題

今日の演習10に従ってホームページを作成し、そのファイル名をkonishi@twcu.ac.jpあてにメールで報告してください。 メールには、学生番号、氏名、科目名、授業の日付け(6/20)を明記してください。


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

2002年6月20日更新
konishi@twcu.ac.jp
Copyright (C) 2002 Zenjiro Konishi. All rights reserved.