スタイルシート、アクセス制御、電子メールの転送

					2014年05月20日
情報科学類 コンピュータリテラシ

                                       筑波大学 システム情報系 情報工学域
                                       新城 靖
                                       <yas@cs.tsukuba.ac.jp>

このページは、次の URL にあります。
http://www.coins.tsukuba.ac.jp/~yas/coins/literacy-2014/2014-05-20
あるいは、次のページから手繰っていくこともできます。
http://www.coins.tsukuba.ac.jp/~yas/
http://www.cs.tsukuba.ac.jp/~yas/

■連絡事項

■補足

■スタイルシート

HTML は、「本来は」、文書の構造を記述する。

HTML で記述できる文書の構造:

HTML では、文書の構造を記述することができるが、「表示の方法」 を記述することは、本来はでない。 ワープロは、紙に印刷した時の、このような表示の方法を設定す るためのプログラムである。

表示の方法:

表示の方法を記述するには、スタイルシートを用いる。

◆XML (eXtendible Markup Language)

XML は、タグが定義できるマークアップ言語(<−>HTMLはタグが固定)。プ ログラム間でデータの交換に用いる。

■カスケーディング・スタイルシート

◆例

H1の見出しを青くする。
<HTML>
<HEAD>
<META HTTP-EQUIV="content-type" CONTENT="text/html;charset=iso-2022-jp">
<TITLE>スタイルシートの例題:タグへの設定</TITLE>
<STYLE TYPE="text/css"><!--
H1 { color: blue; }
--></STYLE>
</HEAD>

<BODY>

<H1>青いH1の見出し</H1>

<H2>普通のH2の見出し</H2>

</BODY>
</HTML>
[表示例]

◆カスケーディング・スタイルシートで記述できること

段落書式 文字書式 箇条書き イメージ その他:

◆スタイルシートを書く場所

(1) HTML のヘッダ

<HTML>
<HEAD>
<TITLE>タイトルです。</TITLE>
<STYLE TYPE="text/css"><!--
(ここにスタイルシートを書く)
--></STYLE>
</HEAD>

(2) 別のファイル

「スタイルシートのURL」は、filename.css のようなファイル名が多い。
<HTML>
<HEAD>
<TITLE>タイトルです。</TITLE>
<LINK rel="stylesheet" type="text/css" href="スタイルシートのURL">
</HEAD>
<HTML>
<HEAD>
<TITLE>タイトルです。</TITLE>
<STYLE TYPE="text/css"><!--
@import url(スタイルシートのURL);
(別ファイルに加えてここにもスタイルシートを書くことができる)
--></STYLE>
</HEAD>

(3) HTML のタグの属性

<P STYLE="color:blue">文。文。文。</P>

◆カスケード

複数のスタイルは、混ぜられる(カスケード)。 対立する定義は、後から出てきた方が有効になる。

◆コメント

コメントとは、ある コンピュータ言語の中に記述する、人間が読むために書かれた部分。 CSS では、/**/ で括った部分がコメントとなる。 この表記法法は、C言語やJava言語と似ている。 (他の言語では、この表記法は使えないことがある。) コメントは、デバッグ時など一時的に コンピュータ言語の機能を無効にしたい時にも使える。

◆基本的な文法

次のような規則の並び
セレクタ  { 宣言;  }
セレクタ, セレクタ, ..., セレクタ { 宣言;宣言;宣言;  }
1つひとつの宣言は、次の形式。
プロパティ:式
「式」には、数、文字列、%、単位つきの長さ、URL などが書ける。

◆書式の有効範囲(セレクタ)

◆クラスの利用例

<HTML>
<HEAD>
<META HTTP-EQUIV="content-type" CONTENT="text/html;charset=iso-2022-jp">
<TITLE>スタイルシートの例題:クラスの利用</TITLE>
<STYLE TYPE="text/css"><!--
.important    { color:red; }  /* class="important" と指定したものだけ */
--></STYLE>
</HEAD>

<BODY>

<H1>普通のH1の見出し</H1>

<P>
普通のパラグラフ
</P>

<P class="important">
重要なパラグラフ
</P>

<H2>普通のH2見出し</H2>

<H2 class="important">重要な普通のH2見出し</H2>

<P>
普通の言葉。<SPAN class="important">重要な言葉。</SPAN>普通の言葉。
</P>

</BODY>
</HTML>
[表示例]

◆WWWページデザインの手順

  1. HTML で全部の表示したい内容を記述する。
  2. スタイルシートを埋め込み、見栄えを調整する。
スタイルシートをうまく活用すると、見た目を一度に調整できる。 いちいち <font> で指定すると、変更したくなった時には、 全部変えなければならない。 <span class="classname">のように、クラスを使ってマークして おけば、1個所クラスの設定を変更するだけで全部統一的に変る。 (同様に、ワード・プロセッサでも、スタイルをうまく活用したい。)

注意点

複数のブラウザ(違うバージョンも含む)で表示を確認したい。

◆CSSクラスと<DIV>タグや<SPAN>タグ

HTMLのタグ、<DIV> (division) と<SPAN> は、グルー プ化するためのタグ。<SPAN>は、1行以内の短い範囲、 <DIV>は、<P>、<H1>、 <H2>、<H3>、<H3>、<UL>、 <OL>等を含むことができる。

CSSのクラスは、しばしば <DIV>タグや<SPAN>タグとともに利用 される。

◆CSSのセレクタ

◆CSSの利用例

◆HTML/CSSにおける16進数による色の指定

HTML/CSS で色を指定する方法としては、色の名前を使う方法の他に16進数を用 いることもできる。
H1 { color: blue; }
H1 { color: #0000ff; }
http://www.w3.org/TR/html40/types.html参照。

HTML ではできないが、CSSでは、次の方法も有効。

H1 { color: rgb(0,0,255); }/* 0 から 255 */
H1 { color: rgb(0%,0%,100%); }/* 0% から 100% */

◆その他のCSSの利用例

その他、次のページが参考になる。

◆テーブル・レイアウト

スタイルシートを使わずに、 <TABLE> タグ を使って配置する方法がある。

■ファイルの属性[4月22日再掲]

Unixのファイルとディレクトリは、内容(ビット列を保存する)の他に、 所有者、更新された日付などの 属性attributes ) を持つ。

ls -l コマンドを実行するとカレントディレクトリのファイルや ディレクトリの属性が表示される。

$ ls -l [←]
total 99
drwx------   4 yas  prof   3072  4 10 17:37 Desktop
drwx------   3 yas  prof   1024  3 11 13:52 Documents
drwx------@ 34 yas  wheel  2048  4 18 10:05 Library
drwx------  20 yas  prof   2048  4 18 10:57 Maildir
drwx------   2 yas  prof   1024  4 21 16:03 Music
-rw-r--r--   1 yas  prof   3178  4 15 15:56 file100.txt
-rw-r--r--   1 yas  prof     25  4 15 15:58 file30
-rw-r--r--   1 yas  prof   2550  4 15 15:59 literacy-a2.txt
-rw-r--r--   1 yas  prof   2550  4 15 15:57 literacy-a2.txt~
...
$ []
行単位に次のようなファイルやディレクトリの属性が表示さる。

◆所有者(owner)

ファイルが誰の所有物かを示す。 コンピュータのなかでは人はユーザ名で表されるので、 所有者もユーザ名(上の例ではyas)で表される。

◆グループ名

Unixでは複数のユーザが属する グループ(group)を設定できる。 ファイルは必ずどれか1つのグループに属する。

◆大きさ

ファイルの大きさ(size)は、ファイルの内容をバイト数で数えた値(bit ではな く byte)。

◆時刻

Unixのファイルには、次の3種類の時刻が記録されている
最終アクセス時刻 (the last access time)
ファイルの「内容」が最後にアクセス(読み込み)された時刻。 ls -lu で表示される。
最終更新時刻 (the modification time)
ファイルの「内容」が最後に変更(書き込み)された時刻。 ls -l で表示される「時刻」で、 単に「ファイルの時刻」といった場合にはこの時刻を意味する。
最終変更時刻 (the status change time)
ファイルの「属性」が最後に変更された時刻。 ls -lcで表示される「時刻」。
他の時刻も属性の1つなので、「最終更新時刻」を変更すると、 「最終変更時刻」も変更した時刻も変わる。

◆モード(mode)

ファイルの型とファイルへのアクセス(読み書き)の可否を決めるための属性

ファイルの型

モードの一番左1文字は、ファイルの型(type)を表わす。
-
ファイル
d
ディレクトリ

許可されたアクセス方法

モードからファイルの型を除いた部分はアクセスの可否を決めるための 情報。9文字ある。左から3文字の固まりが3組ある。

各3文字はアクセス毎にその許可・拒否を表す。

r	読込み可
w	書込み可
x	実行可(ディレクトリの場合は探索可)
モードで該当する部分が「-」の場合は、その種類のアクセスが許可さ れてないことを意味する。

「読込み可」とは、その内容を参照できること意味する。たとえば、cp コマン ドでコピーできる。読出し可能なディレクトリなら、ls コマンドでそのディレ クトリ中のファイル名の一覧を表示できる。

「書込み可」とは、その内容を変更することができることを意味する。たとえ ば、テキスト・ファイルなら、エディタで修正したものを書き込むことができ る。書込み可能なディレクトリなら、mv コマンドでそのディレクトリのなかに あるファイル名前を変更できる。

「実行可」というのは、ファイルの内容がプログラムの場合は、 そのプログラムを実行することができる。

ディレクトリに対する 「検索可」というのは、その下にあるファイルやディレクトリを たどっていける(ファイルを開く(読み書きのため)、cd (change directory)できる)という意味である。

ディレクトリが「読込み可」でも、「検索可」でないと、 ディレクトリに「読込み可」のファイルがあっても、 ディレクトリに入ってファイルを読むことができない。 逆に、「検索可」でも、ディレクトリが「読込み可」でないと、 ディレクトリにあるファイル名やディレクトリ名を表示させることが できない。

そのディレクトリにあるファイル名を知っていて、そのファイルが「読み込み 可」なら読むことがでる。

アクセスするユーザによって異なったアクセスの許可・拒否がしたいことがあ る。そのために、rwxの指定は、ファイルの所有者、ファイルの属すグループ、 それ以外の人用に3セット用意されている。

例:モードが「rw-r--r--」のファイル

まとめると、「誰でも読めるが所有者しか書けない」。

◆ls -ld

ls コマンドは、引数としてファイル名やディレクトリ名を指定することができ る。
$ ls -l /etc/passwd [←]
-rw-r--r--  1 root  wheel  5253  2  6 16:57 /etc/passwd
$ []
ls コマンドにディレクトリ名を与えると、ディレクトリそのものではなく、そ の内容が表示される。
$ ls -l /home/lecture/syspro [←]
total 27
drwxr-xr-x   2 syspro  lecture    80  4 21 16:14 Applications
drwx------   2 syspro  lecture  1024  4 21 16:15 Desktop
drwx------  13 syspro  lecture  1024  4 21 16:15 Library
drwx------   9 syspro  lecture  1024  2 25 23:02 Maildir
drwx------   2 syspro  lecture  1024  4 21 16:15 Movies
drwx------   2 syspro  lecture  1024  4 21 16:15 Music
drwx------   2 syspro  lecture  1024  4 21 16:15 Pictures
drwx------  12 syspro  lecture  2048  4 21 16:15 _OLD_HOME_
drwxr-xr-x   4 syspro  lecture  1024  3 13 15:31 public_html
drwxr-xr-x  11 syspro  lecture  1024  3 13 15:27 syspro-2010
drwxr-xr-x  11 syspro  lecture  1024  3 13 15:27 syspro-2011
drwxr-xr-x  11 syspro  lecture  1024  3 13 15:27 syspro-2012
drwxr-xr-x  11 syspro  lecture  1024  3 13 15:27 syspro-2013
$ []
ディレクトリ自身を表示したい時には、ls -l -d (ls -ld) とする。
ls -dl /home/lecture/syspro
drwxr-xr-x  19 syspro  lecture  2048  4 21 16:15 /home/lecture/syspro
$ []

■アクセス制御

アクセス制御(access control) とは、「主体」が、「オブジェクト」を「操作」する時、どんな操作なら正し いということを定義して、それがきちんと守られていることをということを保 証することである。

図? アクセス制御における主体、オブジェクト、および、操作
図? アクセス制御における主体、オブジェクト、および、操作

Unixでは、アクセス制御の主体は、 プロセス である。 プロセスとは、コンピュータの中で実行中のプログラムのことである。 (プログラムでも、ハードディスクに保存されているものはプロセスではない。) プロセスは、利用者と対応しているので、 アクセス制御では、利用者ごとに許されたアクセスの方法を考えれば良い。

アクセス制御のオブジェクトは、ファイル、または、プロセスである。 操作には、次のようなものがある。

◆ユーザとグループ

Unix (MacOSX, Linux含む), Windows では、ユーザ(個人)とグルー プを識別したアクセス制御を行うことができる。 オペレーティング・システムごとに、ユーザやそのグループの考え方は、基本 的には似ているが、細かい所で異なる。

図? 実世界のユーザとUNIX中のプロセス・ファイル
図? 実世界のユーザとUNIX中のプロセス・ファイル

◆ユーザ

ユーザ(user, 利用者)とは、Unixの外では、個人(人間)。 Unixの内部では、次のどれかで表現する。
ユーザ名(user name)
文字列
UID(user ID, user identifier)
16ビット-32ビットの整数

Unixでは、全てのファイルやプロセスは、あるユーザの所有物である。 ファイルとプロセスには、UID が付加されている。

◆グループ

グループ(group)とは、Unixの外の世界では、計算機を使う人間の集合。 Unixの内部では、次のどれかで表現する。
グループ名(group name)
文字列
GID(Group ID, group identifier)
16ビット-32ビットの整数

1人のユーザが複数のグループに属することができる。

◆ファイルの属性

ファイルは、属性(ls -l で表示)として、UID と GID を1つずつ持つ。 ファイルの所有者となる個人は、1人。 ファイルが属するグループも1つ。

◆プロセスの属性

プロセスは、UID (1個) と GID を複数個持つ。

◆プロセスのユーザ名とグループ名を調べる

プロセスの所有者のユーザ名を表示するには whoamiコマンドを用いる。
$ whoami [←]
yas
$ []
この例では、この人(のプロセス)のユーザ名は、yas

プロセスが属しているグループのグループ名を調べるには、 groupsコマンドを用いる。

$ groups [←]
ugrad _developer netaccounts everyone com.apple.sharepoint.group.1
$ []
この例では、この人(のプロセス)は、 ugrad, _developer, netaccounts everyone, com.apple.sharepoint.group.1, という5つ のグループに属している。

idコマンドも使える。

$ id [←]
uid=1013(yas) gid=530(ugrad) groups=530(ugrad),204(_developer),62(netaccounts),12(everyone),402(com.apple.sharepoint.group.1)
$ []

◆ファイルの UID・GID 属性を調べる

ファイルの UID 属性(所有者属性)と GID 属性を調べるには、 ls -l (ファイルの場合), ls -ld (ディレクトリの場合) を用いる。
$ ls -l ~/.bashrc [←]
-rw-r--r--  1 yas  prof  450  4  8 16:14 /home/prof/yas/.bashrc
$ ls -ld ~ [←]
drwxr-xr-x  54 yas  prof  7168  5 19 14:12 /home/prof/yas
$ []
この例では、UID 属性が yas、GID 属性が prof である。

◆ファイルに対するアクセス制御

Unixでは、ファイルの「内容」のアクセス制御を次の3段階で行う。
ユーザ
ファイルのUID(所有者)が、プロセスのUIDと同じ
グループ
ファイルのGIDが、プロセスのGIDのリストのどれかと同じ
その他
上の2つに当てはまらない時
これをつかって、モード属性の下位9ビットのうち、どの3ビットを使うかを 決める。そして、そのビットが1になっていれば、その操作が許される。

ファイルの「内容」のアクセス3段階であるが、ファイルの「属性」次の2段 階である。

ユーザ
ファイルのUID(所有者)が、プロセスのUIDと同じ
それ以外
ファイルのUID(所有者)が、プロセスのUIDと異なる
ユーザの権限では、ファイルの属性(モード、グループ、時刻)を変更する ことができる。それ以外の権 限では、属性を読み出すことはできるが、変更は一切できない。 つまり、ファイルの内容がアクセスできなくても、ls -l で 属性を調べることはできる。

◆ディレクトリのxの働き

ディレクトリのモードで x は、そのディレクトリの内容を検索できることを意 味する。ディレクトリの x を落すことで、それ以下の部分木全体のアクセスを 禁止することができる。

(ホームディレクトリ以下の)ディレクトリの x を使ったファイルへの読み込み アクセスの許可と禁止。

図? /home/user2/public_html/htdocs/index.html と /home/user2/Maildir/mail1
図? ディレクトリのxの働き

ファイル /home/user2/public_html/htdocs/index.html を読むには、次のディレクト リとファイルのモードが必要になる。パスの途中で x が1つでも途絶えると、アクセ スできなくなる。
  1. / の x
  2. home の x
  3. user2 の x
  4. public_html の x
  5. htdocs の x
  6. index.html の r
ファイル /home/user2/Maildir/mail1 を読むには、次のディレクト リとファイルのモードが必要になる。パスの途中で x が1つでも途絶えると、アクセ スできなくなる。
  1. / の x
  2. home の x
  3. user2 の x
  4. Maildir の x
  5. mail1 の r

◆プロセスに対するアクセス制御

プロセスのアクセス制御は、次の2段階で行なう。
同一ユーザ
操作対象のプロセスが、操作するプロセスのUIDと一致している。
それ以外
操作対象のプロセスが、操作するプロセスのUIDと一致していない。
プロセスの操作としては、シグナルを送ることができるかどうか (kill() システムコール) と、デバッガで デバッグすることができるとか(ptrace() システムコール)、トレースを調べることができるかなどが ある。それらの操作は、同一ユーザの場合 許され、そうではない場合は、許されない。

◆スーパー・ユーザ

どのようなアクセスも可能な無敵のユーザ。

スーパー・ユーザ(super user) は、UID が 0 。 特権ユーザ(privileged user)ルート(root)su (su コマンド、あるいは super user の略)ともよばれる。 スーパーユーザのユーザ名は、慣例として root という文字列が使われる。

ファイルのバックアップなど、システム管理の作業には スーパー・ユーザの仕組みが必要になる。

ファイルの UID・GID 属性を変更する

ファイルの UID 属性(所有者属性)を変更するには、chown コマ ンドを用いる。ただし、スーパーユーザの権限が必要である。

ファイルをコピーして、元ファイルを消すことはできる。

ファイルの GID 属性を変更するには、chgrp コマンドを使う。 一般ユーザは、自分が属しているグループにのみ変更できる。 任意のグループに変更するには、スーパー・ユーザの権限が必要である。

◆ユーザ名とUID、グループ名とGIDの対応、属性の伝播

■ファイルのモードの変更

◆chmod コマンド

chmodコマンドは、ファイルのモード属性を変更するためのコマンド。
$ ls -l file1.txt  [←]
-rw-r--r--  1 yas  prof  2  5 10 18:59 file1.txt
$ chmod go-r file1.txt  [←]
$ ls -l file1.txt  [←]
-rw-------  1 yas  prof  2  5 10 18:59 file1.txt
$ []
file1に対して、グループ(g)とそれ以外の人(o)に対して「読込み可」の許可を 取り除いている。

chmodは一般的には次の形式で実行する。

$ chmod set file1 file2 ... [←]
set の形式
[ugoa][=+-][rwx]
ここの[ugoa]は、誰に対するアクセスの設定を変更するかを対象となる人を以 下の表から選んで並べる(複数可)。
文字 単語 意味
u user ユーザ(利用者,所有者)
g group グループ
o others その他
a all 全員、ugo と同じ
[=+-]の意味
文字 意味
+ 許可を追加する
- 許可を除く
= 指定した許可だけとする
[rwxXst]の部分には次のような指定が可能。
文字 単語 意味
r read 読込み可
w write 書込み可
x execute 実行可
X execute 実行可(所有者に対して「実行可」がある時だけ)
setには[ugoa][=+-][rwx]の指定を「u=rw,og=r」のように「,」で区 切って複数並べることもできる。

chmod には、-R (recursive)オプションがある。 これは、ディレクトリをたぐり全部変更することを意味する。

◆モードの実例

rw-r--r--
誰かでも読めるファイル
rwxr-xr-x
誰かでも読めるアクセスできるディレクトリ。 xもたてる。 (たてる==ビットを1にする。)
rwxr-xr-x
実行可能ファイル
rwx------
MH や Mew を使っている場合は、~/Mail ディレクトリのモード
rw-r--r--
WWWページ用のファイル (~/public_html以下のファイル)
rwxr-xr-x
WWWページ用のディレクトリ (public_html以下のディレクトリ)
rwxr-xr-x または rwx--x--x
WWWページを作成する時のホーム・ディレクトリ (~~/public_html の親ディレクトリ)。 x ビットを出す。
rw-rw-r-- または rwxrwxr-x
グループで共同作業するような時には、グループに属する人には書き込みを許す。
r-xr-xr-x, r-x------
読み込み専用のディレクトリ。 その下のファイルを削除することができない。
注意:WWWページを作成する時には、ホーム・ディレクトリのモードにも注意す る。ホーム・ディレクトリがrwx------になっていたら、いくら ~/public_html のモードを rwxr-xr-x にしても、アクセスで きない。

■~/.forwardによる電子メールの転送

The Unix Super Text 25.9.1 参照メール・リーダの操作には、 受け取ったメールを他のユーザへ 転送(forward) する操作がある。 それとは別に、届いたメールをユーザの操作を介さずに自動的に他のアドレス (普通は他のホストにある別の自分の電子メール・アドレス)に転送する機能 がある。この機能を使うには、ホーム・ディレクトリの下の ~/.forward というファイルに、転送先のアドレスを書く。 たとえば、 shiro@himalaya.is.tsukuba.ac.jp に届いたメールを全て shiro@alps.is.tsukuba.ac.jp に転送したいとする。この時、 himalaya の方のホーム・ディレクトリの下の ~/.forward に次のように書く。
shiro@alps.is.tsukuba.ac.jp
単純に転送先のアドレスを書く方法では、~/.forwardが あるホストには、何も残らないが、コピーを残しながら、転送する方法もある。 それには、次のように自分のログイン名に\を付けたア ドレスを含める。
\shiro, shiro@alps.is.tsukuba.ac.jp
注意:「\」は、ASCII 「5c(16進数)」である。 「\」と表示されたり「¥」と表示されることがある。 「/」ではない。

この例では、himalaya に届いた電子メールは、himalaya と いうホストの \shiroというユーザの 配送プログラム用メール・ボックスに入り、 さらに、shiro@alps.is.tsukuba.ac.jp にも送られる。

~/.forwardにおけるループの危険性

複数のメール・アドレスがある人は、どのホストにログインした時にも、全部 のホストに届いた電子メールが読める状態にしたいと思うかもしれない。 上の例では、 alps にログインした時にも、 alpshimalaya の両方のメールが読め、 また、himalaya にログインしてもやはり alpshimalaya の両方のメールが読める と便利に思えるかもしれない。しかし、こうすることは技術的に難しいので、 しばらくはあきらめて欲しい。

\loginnameの機能をつかっても、なかなかうまくいかない。 たとえば、次のよう な ~/.forward を作成したと考える。(実際に実行すると危険なので、 考えるだけする。)

(alps:~/.forward)
\shiro, shiro@himalaya.is.tsukuba.ac.jp
(himalaya:~/.forward)
\shiro, shiro@alps.is.tsukuba.ac.jp
この状態で、shiro@alps.is.tsukuba.ac.jp にメールが届いた 場合、次のようなことが起る。
  1. alps にコピーが残され、かつ、 shiro@himalaya.is.tsukuba.ac.jp に送らる。
  2. himalaya では、やはり、コピーが残され(ここまでは順調)、 さらに、shiro@alps.is.tsukuba.ac.jp に送られる(!)。
  3. alps では、コピーが残され(2回目)、himalaya に送られる。
  4. himalaya では、コピーが残され(2回目)、 さらに、shiro@alps.is.tsukuba.ac.jp に送られる。
  5. alps では、コピーが残され(3回目)、himalaya に送られる。
  6. himalaya では、コピーが残され(3回目)、 さらに、shiro@alps.is.tsukuba.ac.jp に送られる。
  7. alps では、コピーが残され(4回目)、himalaya に送られる。
  8. himalaya では、コピーが残され(4回目)、 さらに、shiro@alps.is.tsukuba.ac.jp に送られる。
  9. ...
このような電子メールのピンポンが、永遠に続く。実際には、電子メールの転 送には上限が設定されているので、その上限に達した段階でエラーになって止 る。

3ヵ所以上でこの設定をしたとすると、中継される度にメールが増殖する。

\loginname の機能を使っていなかったとすると、コピーは 残らないが、メールが行き来するだけで、どこにも届けられずにエラーになる。

~/.forward の設定をしたら、必ず自分で自分あてに電子メールを出 して届くかテストすること。~/.forward の設定を間違えると、エラー のメールも届かなくなるので、エラーが起こっていることさえわからなくなる。

~/.forward の機能は、もともとは、sendmail という種類のMTA の機 能である。他の MTA (qmail, postfix)でも使えるように設定していることが多い。

◆電子メールをプログラムに転送する

The Unix Super Text 25.9.2 参照~/.forward の応用として、他のアドレスに電子メールを転送するの ではなく、(サーバ上で実行される)プログラムに転送する機能がある。すな わち、(サーバ上で)プログラムを実行して標準入力に電子メールの内容を与 えるという機能がある。これには、次のように~/.forwardに書く。
"| /program/path/name arg1 arg2 arg3 ... argn" 
このように、| に続いて、プログラムのパス名と引数を書き、 全体を "" で括る。

この機能を使って、受け取った電子メールを自動的に分類したり、 spamメール を排除したりすることができる。たとえば、MH の slocalやprocmail と呼ば れているプログラムがこの機能を使っている。

■実習

実習時間中には、 以下の課題をできるだけ多く行いなさい。全部を行う必要はない。

★練習問題(1001) ことえりのバックスラッシュ入力

次のようにして、「ことえり」の設定を確認しなさい。そして、キーボードの 「¥」でバックスラッシュが入力されるように設定しなさい。

★練習問題(1002) .forwardの設定と確認

この練習問題をする前に、必ず ~/.forwardによる電子メールの転送 を読み、働きと危険性を理解しなさい。失敗すると、電子メールが失われたり、 メールサーバに過大の負荷をかけることになる。

coins 以外に日常的に読み書きするメール・アカウントがある人は、毎日 coins に届いたメールを確認する方法として~/.forward を設定して、転送する 方法が考えられる。そのようにしたい人は、そうしなさい。

~/.forward は、emacs でテキスト・ファイルとして作成するとよい。

$ emacs ~/.forward [←]
設定が完了したら、必ず who@coins.tsukuba.ac.jp にメールを書き、 ~/.forward の機能がうまくうまく動いていることを確認しなさい。 (whos + 学籍番号下7桁)のログイン名) メールがループしないことを確かめなさい。

★練習問題(1003) Firefoxのウィンドウ

Firefox で複数のページを同時に表示するには、ウィンドウが便利である。た とえば、講義のページを表示しながら、自分が作成中のページを表示する時に、 この機能を使うと便利である。このことを確認しなさい。
  1. 「ファイル」メニューから「新規ウィンドウ」を選ぶ

★練習問題(1004) Firefoxのタブ

Firefox で複数のページを同時に(切り替えながら)表示するには、タブが便 利である。このことを確認しなさい。
  1. 「ファイル」メニューから「新規タブ」を選ぶ
  2. タブを切り替えるには、ウィンドウの上部にあるタブのタイトルの部分を クリックする。

★練習問題(1005) CSSの観察

自分がよく見る WWW ページについて、スタイルシートが使われているかを観察 しなさい。 Firefoxブラウザを操作して、元の HTML (ソース)を表示させなさい。
  1. 観察したいページを開く。
  2. ページのソースを表示する。
  3. 「表示」メニューから「ページのソース」を選ぶ。
  4. HTML の記述の上部の <head> の中に<style>や <link rel="stylesheet" ..>の記述がないかを調べる。

★練習問題(1006) 学類コンピューティング環境が利用しているCSS観察

学類コンピューティング環境 のページ で利用されているスタイルシートを表示しなさい。そして、どのよ うな機能が利用されているかを調べなさい。
  1. http://www.coins.tsukuba.ac.jp/ce/,学類コンピューティング環境 のページ を開く
  2. ページのソースを表示する。
  3. <head>にある <link rel="stylesheet"...> の href を得る。 これは、 相対形式 になっている。 ( "skin/pukiwiki_gs2.css.php?charset=Shift_JIS&amp;gs2color=" )
  4. これに、元のページの URL を合わせて、 絶対形式 に変換する。 http://www.coins.tsukuba.ac.jp/ce/"skin/pukiwiki_gs2.css.php?charset=Shift_JIS&amp;gs2color=" を合わせて
    http://www.coins.tsukuba.ac.jp/ce/skin/pukiwiki_gs2.css.php?charset=Shift_JIS&gs2color= となる。
  5. こうして得られた URL を、Web ブラウザのURL が表示されている所(ロケー ション・バー) に打ち込み、リターンキー(エンターキー)を押す。

★練習問題(1007) whoami,groups,idコマンド

whoami, groups, idコマンドを使って、プロセス(シェル)のUID, GID, groups 属性を表示しなさい。
$ id [←]
$ whoami [←]
$ groups [←]

★練習問題(1008) 他人から読み書き可能な自分のファイル

ルートからホームディレクトリにいたる間でのディレクトリのモードを調べな さい。
$ echo ~ [←]
$ ls -ld / [←]
$ ls -ld /home [←]
$ ls -ld /home/ugrad/ [←]
・・・中略・・・
$ ls -ld  ~ [←]
ディレクトリ ~/public_html, ~/public_html/htdocs や ~/public_html/index.html のモードを調べな さい。
$ ls -ld ~/public_html [←]
$ ls -ld ~/public_html/htdocs [←]
$ l s-l  ~/public_html/htdocs/index.html [←]
他の人(WWWページとして公開するために、WWWサーバ・プロセスからのアクセ スも含む)がアクセスしようとしたらどうなるかを考察しなさい。

その他に、次のファイルやディレクトリのモードを調べなさい。

★練習問題(1009) 自分が読み書き可能な他人のファイル

他人のファイルで、読み書き可能なファイルを調べなさい。

★練習問題(1010) アクセス不可能な他人のファイル

他人のファイルで、ls -l, ls -ld で属性は表示できるが、内容を読めないファイルを探しなさい。 他人のファイルで、ls -l, ls -ld で属性は表示できるが、内容を書き込むことでできないファイルを探しなさい。

★練習問題(1011) psとkillコマンド復習

ps コマンドと kill コマンド、grep コマンド、lv コマンドの使い方を復習しなさい。

★練習問題(1012) 他人のプロセスのkill

ps コマンド、grep コマンド、lv コマンド等で、他人のプロセスの PID を調 べなさい。その PID を使って、他人のプロセスを kill してみなさい。その結 果、そのプロセスがどうなるかを調べなさい。

★練習問題(1013) chmod コマンド

chmod コマンドで、ファイルやディレクトリのモードを変更しなさい。 以下の例は、file1に対して、グループ(g)とそれ以外の人(o)に対して「読込み 可」の許可を取り除いている。
$ ls -l file1.txt  [←]
-rw-r--r--  1 yas  prof  2  5 10 18:59 file1.txt
$ chmod go-r file1.txt  [←]
$ ls -l file1.txt  [←]
-rw-------  1 yas  prof  2  5 10 18:59 file1.txt
$ []
go-r を含めて、様々なモードの設定方法がある。 次の設定方法の意味を確認しなさい。

★練習問題(1014) WWWページのファイルのモード

WWW ページとして公開するファイルのモードはその他(others)に対するアクセ ス許可で r ビットが立っている必要がある。もし、このビットを chmod o-r で落した場合、Web ブラウザでアクセスできなくなる。このことを確かめなさ い。

$ ls -l sample1.html  [←]
-rw-r--r--  1 yas  prof  408  5 18 11:11 sample1.html
<WWWブラウザでアクセス>
$ chmod o-r sample1.html  [←]
$ ls -l sample1.html  [←]
-rw-r-----  1 yas  prof  408  5 18 11:11 sample1.html
<WWWブラウザでアクセス>
$ chmod o+r sample1.html  [←]
$ ls -l sample1.html  [←]
-rw-r--r--  1 yas  prof  408  5 18 11:11 sample1.html
<WWWブラウザでアクセス>

同様に、ディレクトリを作成し、その他(others)に対する x ビットを立てたり 落したりしながら、その効果を確認しなさい。

$ cd ~/public_html/htdocs [←]
$ mkdir dir1 [←]
$ emacs dir1/file1.html [←]
$ ls -ld dir1 [←]
$ ls -l dir1/file1.html [←]
$ open "http://www.coins.tsukuba.ac.jp/~ユーザ名/dir1/file1.html" [←]
<WWWブラウザでアクセス、再読み込み等>
$ chmod o-x dir1 [←]
$ ls -ld dir1 [←]
$ open "http://www.coins.tsukuba.ac.jp/~ユーザ名/dir1/file1.html" [←]
<WWWブラウザでアクセス、再読み込み等>

★練習問題(1015) 8進数を利用したchmodコマンド

chmod コマンドは、モードを8進数で与えることもできる。 このことを man で確認しなさい。また、利用してみなさい。 8進数で指定することの利点を考えなさい。

★練習問題(1016) chgrp コマンド

chgrp コマンドで、ファイルやディレクトリのGID属性を変更しなさい。
$ ls -l file1.txt [←]
(ファイルのグループの表示)
$ id [←]
(自分(プロセス)が属しているグループの表示)
$ chgrp グループ file1.txt [←]
$ ls -l file1.txt [←]
(ファイルのグループの表示)
$ []
(3) まず、適当な内容を持つテキスト・ファイルを作成しなさい。そして、次 のような要求を満たすように chmod コマンドを使ってモードを変更しなさい。 提出するファイルには、chmod コマンドをどのように利用したか、また、その 結果 ls -l の表示がどのようになったかを含めなさい。

★練習問題(1017) mkdirとchmodによる drop box ディレクトリの実装

同じコンピュータ(ファイルサーバ)を共有しているユーザ間で秘密のファイ ルを受け渡しする方法として、受信側のディレクトリに drop box となる ディレクトリを作成する方法がある。このディレクトリは、 次のようなモードを持つ。
$ ls -ld dropbox [←]
drwx-wx-wx  2 yas  prof  80  5 19 15:28 dropbox
$ []
送信側は、受信者が読めるモードで、ファイルを作成し、受信者の drop box ディレクトリの下にコピーする。
$ emacs file-2014-05-20.text [←]
$ ls -l file-2014-05-20.text  [←]
-rw-r--r--  1 yas  prof  56353  5 19 15:38 file-2014-05-20.text
$ cp file-2014-05-20.text ~user/dropbox [←]
$ []
送信者は、このディレクトリから目的の取り出す。cp コマンド等でファイルを コピーし、元のファイルを rm コマンド等で削除する。

このような drop box を用いて、隣の人、あるいは、その他の友人にファイルを渡しなさい。 同様に、ファイルを受け取りなさい。

$ ls -l file-2014-05-20.text  [←]
-rw-r--r--  1 yas  prof  56353  5 19 15:38 file-2014-05-20.text
$ cp file-2014-05-20.text ~ [←]
$ rm file-2014-05-20.text [←]

注意: Mac OS X では、このディレクトリは標準で ~/Public/Drop Box という名前のディレクトリを用いる。名前に空白が含まれていることに注 意しなさい。このディレクトリの使い方は、次のページに書かれている。

coins では、このディレクトリ~/Public/Drop Box は、自動的には作 成されない。この練習問題では、このディレクトリを用いても良いし、他の名 前のディレクトリでもよい。

注意: この練習問題では、 インターネット上のファイル・サービス https://www.dropbox.com/ を用いない。

★練習問題(1018) mkdirとchmodによる drop box ディレクトリの実装(2)

この drop box の使い方では、ファイル名として予測 可能なものを用いた場合、本来の受信者だけでなく、その他のユーザがファイ ルをアクセスすることも可能である。どのようにすれば、アクセスできるのか を説明しなさい。

他の人へのアクセスを防ぐ方法として、ファイル名に乱数(予測されない文字 列)を含める方法がある。この方法を練習してみなさい。

なお、cp コマンド等でコピーした場合には、ps コマンドで引数が表示される ことがある。このことを確認しなさい。ファイル名を秘匿してdrop box に書き 込む時には、ps で表示されない方法を使う必要がある。その方法を考えなさい。

★練習問題(1019) ディレクトリのGIDの伝播

UIDとGIDの伝播を確認しなさい。 /tmp など、誰でも書き込みできる場所にファイルを作成すると、その ファイルの UID 属性はどうなるか調べなさい。新たに実験用のディレクトリを mkdir コマンドで作成しなさい。そのディレクトリのGID属性を chgrp で変更 し、その中に新たなファイルやディレクトリを作成したら、その GID がどう設 定されるかを確かめなさい。また、既存のファイルをmv コマンドで移動したら どうなるかを調べなさい。

■課題10 スタイルシート、アクセス制御、電子メールの転送

以下の問題、および、回答をテキスト・ファイルに記述し、 レポート提出ページから提出しなさい。

(1) 電子メールの転送について、当てはまる行の先頭に yes, 当てはまらない 行の先頭に no と記述しなさい。

(a) coins 以外に電子メールのアカウントがある。
(b) coins のメールを毎日読む。
(c) ~/.forward の機能を理解した。
(d) ~/.forward を設定した。

(2) 情報科学類の学生は、coinsに届いたメールを毎日確認する必要がある。あ なた自身がどのようにして毎日確認するかを書きなさい。

(3) 次のファイルの属性を ls -l で調べなさい。

調べ方の例:
$ cd ~/Library/Application*Support/Firefox/Profiles/* [←]
$ ls -l cookies.sqlite [←]
このファイルの次の属性を示しなさい。 モードについて、ファイルと同じグループに属する人、その他の人からのアク セスが、このファイル単体でどうなるかを説明しなさい(例: 読み/書き/実行で きる)。

(4) 問題(3) のファイルで、モードに r があったとしても、ファイルと同じグ ループに属する人やその他の人からは、このファイルを読むことができない。 その理由を具体的に木構造の概念を使いながら説明しなさい。

(5) HTML と CSS で次のような条件を満たす WWW ページを作成しなさい。

  1. 課題9(1)の条件を すべて満たす。(同じページを、提出してもよい。)
  2. 2つ以上のタグのスタイルを変更する。そのうち1つ以上は、class を使う。
  3. 同じ class のスタイルを、2個所以上で利用する。 2カ所としては、1つのHTML文書の内部でもよく、また複数の HTML 文書に またがっていてもよい。
作成した WWW ページの URL (http:// から始まるもの)をレポートに含めなさい。 なお、この提出する WWW ページは、 ホーム・ページでな くともよい。

(6) The Unix Super Text の次の部分を読みなさい。

そして、項目についてついて調べて、簡単に説明しなさい。

(7) [加点] (1) で、このページの説明の範囲を超えたスタイルシートの機能を 3つ以上、利用しなさい。そして、各機能の説明、どこに利用しているか、およ び、その機能の有用性を書きなさい。( CSSの利用 例や、その他のCSSの利用例で紹介されてい るものを利用してもよい。)

(6) [加点] 練習問題 mkdirとchmodによる drop box ディレクトリの実装(2)を行いなさい。 次の結果をレポートに含めなさい。

注意: この課題で用いるものは、 インターネット上のファイル・サービス https://www.dropbox.com/ を用いるものではない。


Last updated: 2014/05/27 18:08:03
Yasushi Shinjo / <yas@cs.tsukuba.ac.jp>