正規表現、Webページに対するアクセス制御、ネットニュース

					2009年06月23日
情報科学類 コンピュータリテラシ

                                       筑波大学 システム情報工学研究科 
                                       コンピュータサイエンス専攻, 電子・情報工学系
                                       新城 靖
                                       <yas@is.tsukuba.ac.jp>

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

■連絡事項

■復習

grep コマンド、 Emacs 文字列の置換え、

■正規表現(regular expression)

単純な検索 正規表現の例:「^a.*tion$」。「aで始まり、tionで終わるもの」。

^」、「.」、「*」、「$」 は、 メタキャラクタ。特別の意味を持つ。 メタキャラクタを含まない文字列も、正規表現として意味を持つ。

◆種類

種類
grep系
grep, ed, vi, ex, sed, less (lv)
egrep系
egrep, awk
Emacs
emacs
シェル系
csh, tcsh, sh
その他
Perl, Ruby, Apache, ....
シェルの「*,?,[]」などは、単にワイルドカードではなく、正規表現に 近い。複数の場所に「*」が書けるので、単なるワイルドカードではな い。

◆grep系の正規表現

grep は、文字列を検索するコマンド。

grep使われている正規表現

\
続く文字(メタキャラクタ)の意味をなくす
^
行の先頭。([]の中で使われたときには否定の意味)
$
行の終わり
.
任意の1文字
[c1c2c...cn]
c1c2c...cn のどれか。 例:[abc]ならabcのどれか。
[c1-c2]
c1からc2 の範囲のどれか。 例:[a-z]ならaからzまでのアルファベットの小文字。
[^c1c2c...cn]
並べられた文字以外。 例:[^abc]ならaでもなくbでもなくcでもないもの。
正規表現*
直前の「正規表現」の任意の繰り返し。 例:.*なら任意の文字の任意回数の繰り返し。 [a-z]*ならアルファベット小文字の任意回数の繰り返し。
正規表現1正規表現2
正規表現1に続き正規表現2が続く 例:abなら、「a」に続き「b」。
\(正規表現\)
タグ付き正規表現。 例: X\(abc\)*X は、XabcabcXにマッチする。
\N
N番目のタグ付き正規表現。 例: X\(abc\)\1X は、XabcabcXにマッチする。
\<
単語の先頭。vi, ex のみ。
\>
単語の終わり。vi, ex のみ。
正規表現 マッチする例 マッチしない例
abc abc, abcd ab
\\abc \abc, \abcd \ab
a.c aac, abc, xabc ac, a, c,
a*c c, ac, axc, aaac, xc a
[abc]x ax, bx, XaxX dx
[^abc]x dx, ex bx, Xbx, abx

◆egrep系

言語理論で定義された正規表現のうち、grep では使えなかったものがが使えるようになった。 ただし、一部、grep よりも落ちる。
正規表現+
正規表現の1回以上の繰り返し。「正規表現 正規表現*」と同じ。
正規表現?
正規表現が0回、または、1回。
正規表現1|正規表現2
正規表現1かまたは正規表現2。orの意味。
(正規表現)
正規表現のグループ化。
タグ付き正規表現\(\)やその参照\Nは廃止された。

◆Emacs の正規表現

grep系、egrep系の組み合わせ。|の意味が違い、egrepで |と書く所、Emacs では \|と書く。egrep で \|と書く所では、Emacs では|でよい。
正規表現1\|正規表現2
正規表現1かまたは正規表現2。orの意味。
\`
バッファの先頭
\'
バッファの最後
\w
単語
\W
単語以外
\b
単語の先頭、または、単語の末尾
\B
「単語の先頭および単語の末尾」以外
バッファとは、Emacs でメ モリを抽象化したもの。ファイルの内容を読み込み、編集できる。保存しない と失われる。

■検索と置換え

◆Emacs の検索

通常(一括) インクリメンタル
正規表現なし search-forward isearch-forward
正規表現付き search-forward-regexp isearch-forward-regexp
方向は、-forward 以外に -backward がある。
C-r             isearch-backward
C-s             isearch-forward
C-M-r           isearch-backward-regexp
C-M-s           isearch-forward-regexp
C-M-s は、Esc C-s, C-M-r は、Esc C-r と同じ。

◆Emacs の置換え

一括 問合せ付き
正規表現なし replace-string query-replace
正規表現付き replace-regexp query-replace-regexp
M-%             query-replace
C-M-%           query-replace-regexp

◆コマンドラインでの検索

The Unix Super Text 33.1.3節 参照
grep
正規表現での検索。
egrep
正規表現での検索。+,?,|,() が使える。
fgrep
文字列での検索。正規表現は使えない。
sed
正規表現での検索(pコマンド)。
awk
正規表現での検索(printコマンド)。+,?,|,() が使える。

◆コマンドラインでの置換え

sed
正規表現での検索と、マッチした部分の参照。
awk で、正規表現で行を検索した後、printf()substr() による非正規表現で の置換えができる。

◆find コマンド

Unix の find コマンドは、ディレクトリ木をたどりながらファイルを検索する ことができる。 The Unix Super Text 33.1.5項 参照

注意点

◆メタキャラクタの衝突

シェルに対するコマンドで正規表現を打つときには、メタキャラクタの衝突に 気をつける。 正規表現で使うメタキャラクタシェルのメタキャラクタが重なっている。 シェルが正規表現の「$」や「*」を解釈しないように、 シングルクォート「''」でくくるなどして、エスケープする。

■Webページに対するアクセス制御と認証

ファイルに対するアクセス制御と 考え方が共通の部分と異なる部分がある。

◆アクセス制御

[再掲]

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

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

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

◆Webページにのアクセスにおける主体、オブジェクト、操作

WWWは、もともと大勢の人にメッセージを伝えるための仕組みだが、後付けでア クセス制御の仕組みを入れた。 あるページは、ある特定の人(同じ研究室・部署の人)だけにしか見えないよ うに設定することもできる。

主体
オブジェクト
URLで表現できるもの。木構造を利用した指定や正規表現による指定も可能。
操作

◆Webページに対するアクセス制御の設定

アクセス制御の設定は、普通は、オブジェクト側でなされる。 access.conf は空で、全部 httpd.conf に書くことも多い。 サーバの管理者は、.htaccess を無効にもできる。

coins では、orchid-nwd の次の場所にある。

◆IPアドレスやドメイン名によるアクセス制御

httpd.conf や .htaccess に次のように記述する。
order deny,allow
deny from all
allow from 130.158.0.0/16 133.51.0.0/16 192.50.17.0/24
主体は、IP アドレスで指定されたクライアント・コンピュータ。

◆WWW Basic認証

WWW ブラウザが1つのページをアクセスするたびに HTTP のヘッダにユーザ名 とパスワードを含める。

GET /dir1/file1.html HTTP/1.1[←]
Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==[←]
[←]
Authorization: には、ユーザが打ち込んだユーザ名とパスワードが Base64 (64進数)で符合化されて含まれている。Base64 は、暗号ではないので、 簡単に元にもどせる。

% echo QWxhZGRpbjpvcGVuIHNlc2FtZQ== | openssl base64 -d [←]
Aladdin:open sesame% [←]
% []
Basic 認証では、パスワードがそのままネットワークを流れてしまう。 この問題点を解消するために、SSL で通信路を暗号化することがよく行われる。

◆WWW Basic認証の設定

ユーザ名とパスワードの対応を保存する方法にはいくつかの方法がある。

◆ファイル名のマッチング

.htaccessでは、アクセス制御の対象を、特定のファイル名のパタン(正規表現)を 持つものだけに限定することができる。 以下の例では、拡張子として .gif, .jpeg, .jpg, .png 等を持つファイルを対 象として、deny, allow を適用している。
<FilesMatch "\.(gif|jpe?g|png)$">
    order deny,allow
    deny from all
    allow from 130.158.0.0/16 133.51.0.0/16 192.50.17.0/24
</FilesMatch>

■cookie

cookieは、コンピュータ・サイエンス(情報学類)の専門用語。

協調して動作しているプログラムの間で、ある一連の作業を識別するための数 を意味する。

WWW(World Wide Web)では、1回のデータ転送ごとに通信路が切断される ので、通常はWWWのブラウザ(クライアント)とWWWサーバの間では、途 中経過を保持することができない。

途中経過を保存したい時:

WWWで途中経過を保存するためには、cookie が使われる。

サーバは、その情報を利用して、適切なページ(たとえば前回最後に訪れたペー ジ)を表示させるようにすることができる。

◆cookieとプライバシ

現在の cookie の実現では、利用者のプライバシーを犯す危険性が高いという 問題が指摘されている。

普通のWWWサーバでは、要求を送ってきたコンピュータのIPアドレスを記 録しているので、コンピュータ単位でのアクセス状況を記録することはできる が、個人を特定することはできない。

クッキーを利用することにより、コンピュータではなくどの個人がアクセスし てきたかを記録することができる。

クッキーから電子メールのアドレスや氏名まで調べることはできない。 しかし、インターネットをサーフしている間にどこかでそれを打ち込んだが最 後、クッキーと電子メール・アドレスや氏名との対応が記録されてしまう危険 性がある。

参考

RFC2965 HTTP State Management Mechanism

■ネットワークニュース

ネットワーク・ニュース(network news)、あるいは、ネットニュース (netnews)は、電子メールと並び古くから使われているインターネットのアプ リケーション。 World Wide Webよりずっと古い。

ネットワーク・ニュースのメッセージを読み書きするには、ニュース・リーダ と呼ばれるプログラムを使う。

◆ニュース・リーダの種類

Thunderbird Thunderbird の icon
電子メールが本業。 MacOS, Linux, Windows, Windows その他で動作する。 手引き 5.2節 参照
Netscape Messenger, Mozilla
Thunderbird に引き継がれた。
GNUS (にゅーず)
Emacs の中で使える。メールも読める。 The Unix Super Text 26.3節 参照, 手引き 3.5節 参照
Mew
Emacs の中で使える。本業は、メール。 手引き 3.4 参照, The Unix Super Text 25.7節 参照
Wandarlust
Emacs の中で使える。本業は、メール。 手引き 3.6 参照
vin (びん)
筑波大学の卒業生、佐藤豊氏の作品。メールも読める。 The Unix Super Text 26.4項 参照
mnews(えむにゅーす)
階層構造に基づくニュース・リーダ。電子メールも読 み書きできる。もともとは、重たい vin を mini にして軽くしようとしたが、 mnews 自体も独自の発展を遂げた。 The Unix Super Text 26.2項 参照
Outlook Express
Windows 用。
Google Groups
Google は、ネットワーク・ニュースの記事を Web ブラウザでアクセスできる ようにしている。ただし、操作性がよくない。 http://groups.google.co.jp/

■資料

Active Newsgroups List of fj
http://www.fj-news.org/active/ ([ローカル・キャッシュ])
情報学類/分散システムの資料
技術的には、冗長リンクで、記事を落ちないようにしていることと、記事の重 複対策に Message-ID: を遣っていることが重要である。

■ネットワーク・ニュースの基本的な考え方と操作

ネットワーク・ニュース(network news) あるいは、 ネットニュース(netnews) は、インターネットで「1対多の通信」を実現するための仕掛けの1つ。 Usenet と呼ばれることもある。 ネットワーク・ニュースでは、ある書き手が発したメッセージを、大勢の人が 読む。ネットワーク・ニュースでは、メッセージの事を新聞に たとえて「 記事(article) 」と呼ぶ。 1つひとつの記事は、電子メールと同じく、基本的にはテキストである。

◆記事の転送、サーバ、保存期間

図?は、ネットワーク・ニュースの記事が配送される様子を表わしている。

ネットワーク・ニュースの記事転送の仕組み

図? ネットワーク・ニュースの記事転送の仕組み

各LAN上のどれかのコンピュータでは、ネットワーク・ニュースのサーバ (NNTPサーバ) とよばれるコンピュータ が動いている。そのサーバは、LAN内の他のコンピュータで動いているニュー ス・リーダからの要求に従って、自分が保存している記事を提供する。また、 投稿された記事や他のサーバから受け取った記事を、他のサーバへ転送する。 この時、サーバ間、および、サーバとニュース・リーダの間で使われる、 通信の仕組みは、 NNTP (Network News Transfer Protocol) と呼ばれている。

このように、ネットワーク・ニュースの記事はサーバ間で次々にコピーされる 形で伝わっていく。この時、世界中の数百万のサーバの中には、コピーに 失敗することがある。こういう現象を、「記事が落ちる」という。 また、コピーには、どうしても遅れか生じる。電子メールが1分もかからな いで届くような間でも、ネットワーク・ニュースの場合は、数時間はかかると こともある。また、途中のサーバが止まっていると、記事が落ちな いまでも、そこで何日か足止めされることがある。

ニュース・リーダ(news reader) は、ユーザと対話しながら、サーバから記事を取り寄せたりサーバに記事を送っ たりするプログラムである。

ネットワーク・ニュースでは、毎日膨大な量の記事が投稿されている。それ を保存するためのディスク容量には、限りがある。よって、記事は、あ る保存期間が過ぎると自動的に消されるようになっている。 これを、 エクスパイア(expire) するという。保存期間は、サーバによって異なるか、普通は2週間程 度である。 coins では、3ヶ月。

◆記事の形式

ネットワーク・ニュースの記事は、次のようなテキスト。

Newsgroups: fj.news.reader
From: shiro@is.tsukuba.ac.jp (Shiro Yagi)
Subject: E-Mail facility of news readers
Date: Thu, 24 Apr 2008 00:55:50 GMT
Organization: Institute of Information Sciences and Electronics, Univ of Tsukuba
Message-ID: <SHIRO.10Apr24085550@is.tsukuba.ac.jp>

こんにちは。白やぎです。

ニュース・リーダの電子メールも読み書き機能では、どれが便利一
番便利でしょうか。GNUS でも、メールが読めると聞いたのですけ
れど。

♪♪ 白やぎ
♪♪ http://www.is.tsukuba.ac.jp/~shiro/

ネットワーク・ニュースの記事の構造は、 電子メールと共通である。 電子メールもネットワーク・ニュースの記事も、空行で ヘッダ(header、頭)本文(body) にわかれる。

電子メールと共通のフィールド:

ネットワーク・ニュースに独自のフィールドで、特に重要なもの

◆ニュース・グループの木構造

記事は、 ニュース・グループ(newsgroup) と呼ばれる仕組みを使って分類されている。世界中で1日に投稿される記事 は、数百万にもなる。それらの記事を全部読むことはできない。 ニュース・グループという仕組みを利用して記事を分類し、各自が興味を持っ ている記事を簡単に見つけられるようにしている。 それぞれの記事のヘッダのNewsgroups: フィールドには、その記事がど のニュース・グループに属しているかが書かれている。

ニュース・グループには、次のように、「.」で区切られたアルファベット や数字などで名前が付けられている。

fj.rec.music
日本関係のニュース・グループ群 fj (From Japan)で、レクリエーション (recreation)関係で、音楽に関する記事を集めるためのニュース・グループ
fj.comp.lang.c
日本関係のニュース・グループ群 fj (From Japan)で、コンピュー タ関係で、言語関係で、C言語についての記事を集めるためのニュー ス・グループ

ニュース・グループの名前は、英語で、かつ長いものは省略形で 付けられている。

ニュース・グループの名前は、全体として、 木構造 になっている。木構造が使われている理由は、 ファイルの名前付け と同様に、非常に数多くのニュース・グループを扱えることによる。 節の区切りは、「/」ではなく、「.」。

ニュース・リーダの中でも、mnews や vin は、ユーザがニュー ス・グループの木構造にそってニュース・グループを選んでいくことになる。 ニュース・リーダによっては、ユーザは、木構造をあまり意識せず、自分が 興味があるグループを自分が好きな順序で選んでいくことができるようになっている。

1つの記事は、普通、1つのニュース・グループにだけ現われる。記事を投 稿する時に、複数のニュース・グループに現われるようにすることを、 クロスポスト という。

よいニュース・リーダなら、クロスポストされた記事を見つけると、一度 だけユーザに提示し、別のニュース・グループでは既読として扱い、提示しな いという機能がある。クロスポストの機能を使わずに、同じ内容の記事を 複数のニュース・グループに別々に投稿することを マルチポスト という。マルチポストは、特別な場合を除いて、避けるべきである。い くら大事で有益な情報でも、何度も同じ記事を読むことを望む人はいない。

◆配布範囲

配布範囲 ( Distribution: とは、 普通、記事が配られる範囲を制限する(小さくする)機能である。 配布範囲の例としては、 学内、社内、市内などが考えられる。典型的な使い方は、 たとえば、fj などのもともと世界区のニュース・グループに、学内に限定し た話題を投稿する時に、配布範囲として「学内」を指定して投稿するというこ とである。

特別な配布範囲:

local
そのサーバ内。
world
そのニュース・グループを講読している全てのサーバ。

配布範囲の機能は、現在の所、あまりうまく活用されていない。 多くの場合は、空のままでよい。配布範囲が空の場合、 world という意味になる。

◆ニュース・リーダの操作

ニュース・リーダの操作には、次のようなものがある。
  1. 記事を読む
  2. 記事を書く(ポストする、投稿する)
  3. ある記事に続けて記事を書く(フォローアップする)
  4. 電子メールで返事を出す
  5. 記事をキャンセルする
  6. 記事を保存する
  7. 環境を整える
記事を読むには、まず、ニュース・グループを選ぶことから始まる。 次に、Subject: や From: を見て、その記事を読むかどうかを 決める。

ニュース・グループの中には、自分には興味がないものもある。ニュース・ リーダには、そのようなニュース・グループを、表示しない機能がある。 このことを、ニュース・グループを購読しない状態にするとか、 アンサブスクライブ(unsubscribe) するという。多くのニュース・リーダは、新しいニュース・グループを 購読する状態 ( サブスクライブ(subscribe) された状態 ) にする。ユーザは、興味があればそのままの状態にしておき、興味がなけれ ば、アンサブスクライブする。

1つのニュース・グループでは、各記事には、サーバが受け取った順に付けら れた番号が付けられている。 記事番号 と呼ぶことがある。ニュース・リーダは、標準では、この記事番号の順番 に記事を提示する。Subject: や、 スレッド の順序で並べ変えて関連する話題を連続的に読めるように提示する機能がある ニュース・リーダもある。記事番号、ニュース・サーバごとに異なる。 記事を参照する時には、 Message-ID: を使う。

記事を書くには、記事の形式で説明 したようなテキストを作成し、サーバ・プロセスに渡すことになる。この 作業を、記事を投稿する、 あるいは、 ポストするという。

ネットワーク・ニュースの記事を投稿するのは、電子メールを出すことと非常 によく似ている。異なる点は、 電子メールの受取人の電子メールのアドレス(To:)の代わりに、ニュー ス・グループ名(Newsgroups:)を指定する所、および、 配布範囲 (Distribution:)を指定することである。

投稿された記事は、すぐには読めない。これは、効率のため、ある程度ため 込んでまとめて処理されるからである。うまく投稿されたかどうかを確認するに は、場合によっては10分〜15分ほど待つ必要がある。そして、1度 ニュース・リーダをを終了して、再び実行しなおすか、新着記事をチェックす る操作を行うと、見えるようになる。

ネットワーク・ニュースでは、記事を投稿する時に、他の人が書いた記事を引 用しつつ自分の意見を書き加える形で行なうことがよく行われる。この方法の 投稿ことを、 フォローアップ(followup) という。ネットワーク・ニュースの記事を読むと直ぐに気が付くように、 記事の大部分はフォローアップ記事である。どのニュース・リーダも、フォ ローアップ記事を簡単に投稿できるような機能を持っている。

記事をクロスポスト記事するには、 Newsgroups: ヘッダに、ニュース・グループを「,」で区切りながら並べる。 また、クロスポストする時には、同時に Followup-To: を付け、以後の議論が続けたいニュース・グループを指定することができる。 これが付いた記事にフォローアップしようとすると、ニュース・リーダは、こ こに指定されたニュース・グループをNewsgroups: に設定する。

ネットワーク・ニュースでは、フォローアップで話を進めていくことが基本だが、 記事を書いた人に電子メールを出して詳しい話を聞いたり、 詳しい情報提供をしたりすることも行われる。 このことを、電子メールと同様に、 リプライ(reply) するという。

電子メールと違って、ネットワーク・ニュースでは、一度投稿した記事を 取り消すことができる。これを、記事を キャンセル(cancel) するという。キャンセルできるのは、自分が投稿した記事だけである。 普通のニュース・リーダなら、キャンセルする機能がある。

記事は、保存期間が終ると消えるので、ネットワーク・ニュースの記事で、有 益なものを見つけた時には、ファイルに保存する必要がある。ニュース・ リーダでは、記事を保存する機能がある。

◆サーバの選択

ニュース・リーダは、LAN上で動いているネットワーク・ニュースのサーバ を探して接続する。この時、どのサーバを使うかを指定する方法には、 ニュース・リーダの設定画面や プログラムを実行する時に与えるパラメタ (引数や環境変数 NNTPSERVER ) が使われる。ポー ト番号は、標準では 119 が使われるので、普通は、ホスト名だけを指定する。 ニュース・リーダの中には、119 以外のポート番号に接続できるものや、複数 のサーバに接続できるものもある。

■ネットワーク・ニュースに関する知っておきたいこと

■ニュース・リーダ vin

■実習

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

★練習問題(2001) grepコマンド

grep コマンドの正規表現検索機能を使って、次のファイルや結果を検索しなさ い。 grep コマンドの正規表現検索機能を使って、次のコマンドの実行結果結果を検 索しなさい。

★練習問題(2002) egrep

grep の代わりに egrep を使ってみなさい。egrep 独自の機能を調べなさい。

★練習問題(2003) sed

The Unix Super Text 35.3 参照。 sed コマンドを使って、正規表現の検索を行いなさい。 sed コマンドを使って、正規表現の置換えを行いなさい。

★練習問題(2004) awk

awk コマンドを使って、正規表現の検索を行いなさい。

★練習問題(2005) 1行プログラミング

Ruby, Perl などのスクリプト言語が持つ1行プログラミングの機能を用いて、 正規表現の検索を行いなさい。
% ruby -n -e 'print if /正規表現/' [←]

★練習問題(2006) lookコマンド

look コマンドは、単語のスペルを調べるコマンドである。grep コマンドを用 いて、look コマンドと同じ単語が検索できることを確認しなさい。
% cd /usr/share/dict [←]
% grep '^pattern' words [←]
% look pattern [←]

★練習問題(2007) WWW ブラウザの cookie の状態

WWW ブラウザが、cookie をどのように扱う状態になっているかを調べなさい。 cookie を受け付けないように設定してみなさい。

MacOSX Firefox

次のような操作を行ってみなさい。

★練習問題(2008) ファイルに保存されたCookieの観察

cd, ls, lv コマンドなどを利用して Cookie が保存されているファイルを観察 しなさい。MacOSX Firefox では次の場所にある。

★練習問題(2009) .htaccessによるBasic認証のページ(coinsのパスワード)

~/secure_html/ の下に、実験用のディレクトリを作成しなさい。
% mkdir ~/secure_html [←]
% mkdir ~/secure_html/ディレクトリ名 [←]
次のドキュメントを参考にして、作成したディレクトリに .htaccess を作成し なさい。 次の3つの方法を比較しなさい。 レポート提出ページや出席ボタンでは、どのような設定になっているかを観察しなさい。

★練習問題(2010) .htaccessによるBasic認証のページ(htpasswd)

htpasswd コマンドを使ってパスワード・ファイルを作成しなさい。作成したパ スワード・ファイルを利用して、Basic 認証によりアクセス制御を行うように 設定しなさい。 The Unix Super Text 28.7.6項 参照

例:パスワード・ファイル /home1/prof/yas/etc/passwd-doc1 に登録されているユーザだけが、 .htaccess があるディレクトリ以下にあるファイルをアクセスできる。

.htaccess:

AuthType Basic
AuthName "restricted stuff"
AuthUserFile /home1/prof/yas/etc/passwd-doc1
require valid-user
このパスワード・ファイルは、サーバ上でhtpasswd というプログラムで作成する。
% htpasswd -c /home1/prof/yas/etc/passwd-doc1 user1 [←]
Adding password for user1.
New password:user1のパスワードを打ち込む[←]
Re-type new password:user1のパスワードを打ち込む[←]
% htpasswd /home1/prof/yas/etc/passwd-doc1 user2 [←]
Adding user user2
New password:user2のパスワードを打ち込む[←]
Re-type new password:user2のパスワードを打ち込む[←]
% []
一番最初は、-c オプション付で実行する。passwd コマ ンドと同様に、打ち込んだパスワードは、画面には表示されず、また、確 認のために2回打つ必要がある。

htpasswd コマンドの結果、次のようなファイルが作られる。

user1:1fjr1tHIgoG7U
user2:qXaeA9Zge7Yqc
ユーザ名と暗号化されたパスワード(正確にはパスワードのハッシュ値)から 構成される。

パスワードによるアクセス制御の例: 設定ファイル .htaccess

AuthType Basic
AuthName "restricted stuff"
AuthUserFile /home1/prof/yas/etc/passwd-doc1
require valid-user

★練習問題(2011) .htaccessによるBasic認証のページ(dbmmanage)

htpasswd コマンドの代わりに dbmmanage コマンドを使い、パスワード・ファ イルを作成しなさい。作成したパスワード・ファイルを利用して、Basic 認証 によりアクセス制御を行うように設定しなさい。

★練習問題(2012) WWWページに対するIPアドレスによるアクセス制御

特定のIPアドレスのコンピュータからしか表示できないような WWW ページを作 成しなさい。逆に、特定のIPアドレスのコンピュータからは表示できないよう な WWW ページを作成しなさい。

★練習問題(2013) 正規表現によるアクセス制御

Apache には、正規表現によりアクセス制御の対象となるファイル名や URL を 指定する機能がある。この機能を確認しなさい。

★練習問題(2014) レポート提出ページの.htaccess

レポート提出で用いている report.cgi プログラム は、次の場所にある。
% ls ~yas/secure_html/coins/literacy-2009/ [←]
% ls -a ~yas/secure_html/coins/literacy-2009/ [←]
ここにある .htaccess にどのような記述がなされているかを調べなさい。

★練習問題(2015) Thunderbirdでのニュース・リーダの設定

Thunderbirdでネットワーク・ニュースの記事を読めるようにしなさい。 手引き 5.2.2項 参照

★練習問題(2016) ニュースグループの調査

自分が興味があるニュース・グループを探しなさい。

たとえば、fj では次のような方法がある。

★練習問題(2017) 記事の保存

自分が興味がある記事を保存しなさい。 保存した記事を lv コマンド(手引き)、Emacs などで観察しなさい。

★練習問題(2018) 記事の投稿、フォローアップ記事、キャンセル

coins.test など coins から始まるニュースグループに記事を投稿してみなさ い。フォローアップ記事を投稿してみなさい。また、キャンセルの練習のため の記事を投稿し、それをキャンセルしてみなさい。

★練習問題(2019) vinの利用

ニュース・リーダ vin を利用してネットワーク・ニュース の記事を読みなさい。

★練習問題(2020) その他のニュース・リーダの設定

その他のニュース・リーダを設定して、記事が読めるようにしなさい。

★練習問題(2021) newsrcファイルの観察

ニュース・リーダは、未読記事と既読記事の管理を newsrc というファイルを使って行う。 記事を読みながら、そのファイルの内容がどのように変化するかを観察しなさい。

■課題20 正規表現、Webページに対するアクセス制御、ネットニュース

締め切りは、 6月30日火曜日 とする。 回答をテキスト・ファイルに記述し、(レポート提出 ページ)から提出しなさい。

(1) 正規表現の検索機能を用いて、次のファイルから次のことがらを検索して 画面に表示しなさい。レポートには結果だけでなく、どのようなコマンドを打っ たのかを示しなさい。head コマンドや tail コマンドと組み合わせて、表示の 行数を採点しやすい程度にしぼりなさい。

レポートには、コマンドラインと実行結果を含めなさい。実行結果が10行以上 に渡る時には、途中を省略しなさい。アクセス・ログに時分のページへのアク セスがない場合には、Web ブラウザでアクセスしなさい。

なお、grepコマンドには、or の機能がない。orが必要な場合、grep コマンド を複数回実行してもよい。egrep 機能を用いれば 1 回で終わることもある。

(2) 正規表現の検索機能を用いて、次のコマンドの実行結果から次のことがら を検索して画面に表示しなさい。

(3) 正規表現の置換え機能(sed,Emacs,viなど)を用いて、次のことを行いなさい。

レポートには、利用したプログラムの種別、そのプログラムに与えた命令を書 きなさい。

(4) アクセスする時に Cookie の設定を要求する Web サイトを1つ示しなさい。 そのサイトが Cookie の設定を有効にした時と無効にした時で動作が変わるか を調べなさい。

(5) [加点] Webページにおいて、ある特定のディレクトリ以下のファイルやディ レクトリに対して、Basic 認証、または、IP アドレスを用いてアクセス制御を 行うように設定しなさい。レポートにはディレクトリ名、および、作成し た.htaccess の記述、アクセスが許されたときのログ、失敗した時のログを含 めなさい。ログは最小限のものだけを含めなさい。

(6) [加点] ニュースリーダの設定を行いなさい。ネットワーク・ニュースの記 事を読みなさい。その中で、面白い記事、または、将来役立ちそうな記事を保 存しなさい。この時、次のヘッダをきちんと保持しなさい。

保存した記事を、Emacs 等のテキスト・エディタで表示できることを確認しな さい。ファイルに保存した記事を、レポートに含めなさい。保存した記事に対 する批評(よい所、悪い所、賛成できる所、意見が異なる部分を書く)を行い なさい。


Last updated: 2009/06/23 14:40:45
Yasushi Shinjo / <yas@is.tsukuba.ac.jp>