情報システム概論 I システム情報工学研究科CS専攻、電子・情報工学系 新城 靖 <yas@is.tsukuba.ac.jp>
このページは、次の URL にあります。
http://www.coins.tsukuba.ac.jp/~yas/coins/compsys1-2006/2007-02-28
あるいは、次のページから手繰っていくこともできます。
http://www.coins.tsukuba.ac.jp/~yas/
http://www.cs.tsukuba.ac.jp/~yas/
Gateway とは、WWW で使われている HTTP というプロトコルへの入り口という 意味。 プログラムの実行結果は、普通は、HTML にすることが多いが、普通のテキス トであることもイメージであることもある。
図? CGIの仕組み
CGI の利用例
CGI になるファイル名のパタン
設定によっては、これ以外のものも可能である。
http://www.coins.tsukuba.ac.jp/~yas/coins/compsys1-2006/2007-02-28/counter.cgi
1: #!/usr/bin/ruby 2: 3: Datafile="/home1/prof/yas/coins/compsys1-2006/cgi-data/counter.data" 4: 5: def main() 6: begin 7: f=File.open(Datafile,"r+",0666) 8: rescue StandardError => e 9: show_error("touch datafile") 10: end 11: f.flock(File::LOCK_EX) 12: c_str = f.read() 13: if( c_str == "" ) 14: c_str = "0" 15: end 16: c = Integer(c_str) 17: c = c+1 18: f.rewind() 19: c_str = c.to_s() 20: f.write( c_str ) 21: f.truncate(f.pos) 22: f.flock(File::LOCK_UN) 23: f.close() 24: show_counter_value( c ) 25: exit( 0 ) 26: end 27: 28: def show_counter_value( c ) 29: msg = <<-EOF 30: Content-Type: text/plain 31: 32: #{c} 33: EOF 34: print( msg ) 35: end 36: 37: def show_error( e ) 38: msg = <<-EOF 39: Content-Type: text/plain; charset=EUC-JP 40: 41: エラーです。ごめんなさい。 42: EOF 43: print( msg ) 44: exit( 1 ) 45: end 46: 47: main()WWW ブラウザを使って Apache 経由で実行させ、その結果を表示する代わりに シェルから実行し、結果を端末の画面に表示させる方法もある。
% cd ~yas/public_html/coins/compsys1-2006/2007-02-28CGI のプログラムは、画面(標準出力)に結果を表示する。一行目は、 Content-Type: が多い。HTML を出力するなら、Content-Type: text/html と する。 空行以降に、ブラウザの画面に表示されるべきデータを置く。 (空行以前は、HTTP のヘッダに関係している)。% ./counter.cgi
Content-Type: text/plain 10 % ./counter.cgi
Content-Type: text/plain 11 %
![]()
WWW サーバ Apache は、1行目を解析(parse)して、クライアントに対して返 すべき HTTP のヘッダを作成する。それ以外のヘッダも生成して送る。
% telnet www.coins.tsukuba.ac.jp 80Trying 130.158.86.207... Connected to orchid-nwd.coins.tsukuba.ac.jp. Escape character is '^]'. GET /~yas/coins/compsys1-2006/2007-02-28/counter.cgi HTTP/1.0
![]()
HTTP/1.1 200 OK Date: Tue, 27 Feb 2007 03:12:23 GMT Server: Apache/2.0.55 (Unix) PHP/4.4.2 Connection: close Content-Type: text/plain 12 Connection closed by foreign host. % telnet www.coins.tsukuba.ac.jp 80
Trying 130.158.86.207... Connected to orchid-nwd.coins.tsukuba.ac.jp. Escape character is '^]'. POST /~yas/coins/compsys1-2006/2007-02-28/counter.cgi HTTP/1.0
![]()
HTTP/1.1 200 OK Date: Tue, 27 Feb 2007 03:12:45 GMT Server: Apache/2.0.55 (Unix) PHP/4.4.2 Connection: close Content-Type: text/plain 13 Connection closed by foreign host. %
![]()
Unix オペレーティング・システムのカーネルは、 ファイルに保存された実行型式のプログラムを、 ファイル(ハードディスク)からメモリにコピーして実行する機能がある。 ただし、先頭の2バイトが「#!」であった場合は、メモリに読み込むのは、 そのファイルではなく、「#!」以降に記述されたファイルを読み込み実行する。 「#!」には、普通、インタプリタを指定する。
インタプリタ(機械語)は、実行されると、引数として、 プログラム(テキスト)が含まれているファイルの名前を得る。 それをメモリに読み込んで、(機械語には変換せず)解釈・実行する。 ( 仮想計算機の機械語や木構造などの中間言語に変換することがある。 )
% ls -l run-cat-n-rwxr-xr-x 1 yas prof 20 Feb 27 12:14 run-cat-n % cat run-cat-n
#!/bin/cat -n hello % ./run-cat-n
1 #!/bin/cat -n 2 hello % cat -n ./run-cat-n
1 #!/bin/cat -n 2 hello %
![]()
s = f.read()C言語のような手続き型言語では、次のように書く
s = read(f)
上のプログラムでは、Integer() で、整数に変換している。
File::open() で、エラーが起きると、「例外」が発生し、制御がrescue に飛 ぶ。
カーネルには、通信のためのハードウェア(ネットワーク・インタフェース)を 操作するためのデバイス・ドライバも含まれる。
ネットワーク通信を行うプログラムは、システムコールを通じてTCP/IP の機 能を利用する。
図? アクセス制御における主体、オブジェクト、および、操作
ファイルの「内容」のアクセス3段階であるが、ファイルの「属性」次の2段 階である。
アクセス制御の方針(ポリシー)は、サーバ側で記述される。 この時、次のような情報がよく使われる。
アクセス制御は、基本的には、WWWサーバの管理者の仕事である。
WWWサーバ (httpd) の設定ファイル
(
/usr/local/etc/httpd/conf/httpd.conf
,
/var/www/conf/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
例:パスワード・ファイル
/home/lab/Denjo/yas/etc/passwd-doc1
に登録されているユーザだけが、
.htaccess
があるディレクトリ以下にあるファイルをアクセスできる。
AuthType Basic AuthName "Members Only" AuthUserFile /home1/prof/yas/etc/passwd-doc1 require valid-userこのパスワード・ファイルは、htpasswd というプログラムで作成する。 coins では、LDAP サーバを参照する方法も使えるようにしている。
https://www.coins.tsukuba.ac.jp/ce/index.php?web%B4%C4%B6%AD
AuthType Basic を使うアクセス制御の方法では、パスワードがそのままネッ トワークを流れてしまうので、盗聴に弱い。 coins では、SSL による暗号通信を使うようにできている。
図? 暗号の考え方
暗号の方法は、大きく2つに分類される
例
利用例
01で符合化できれば、あとは、なんとかなる。 (01で符合化できないものは、どうしようもない。)
情報システム流の考え方。とにかく速くする、大量のものを扱えるようにすれ ば、すれば質も自ずから変る。
相転移。