まず、ターミナルを開いてホームディレクトリに「public_html」という 名前のサブディレクトリを作成し、そこへ移動してから、「index.html」 というファイルをemacs で編集します。
[nakano@n79 nakano]$ mkdir public_html [nakano@n79 public_html]$ cd public_html [nakano@n79 public_html]$ emacs index.html&
emacsが起動したら、以下のように、一行だけ「TEST!」と入力して、 セーブします。
次に、デスクトップ画面右側の赤い怪獣マークのアイコンをダブルクリッ クして。Mozillaを起動して、 「file:///home/nakano/public_html/index.html」を開くと、以下のよう に表示されます。
これは、ローカルなファイルをそのまま表示したもので、ネットワークを 介しているわけではありません。
つぎに、「n79.cc.kumamoto-u.ac.jp/~nakano/index.html」(各自のサーバ名、ユーザ名を使用)を開くと、以下の ように表示されます。「http://133.95.45.79/~nakano/index.html」 (各自のIP、ユーザ名使用)でも同じことです。
これは、ネットワークを介して、自分のPC上のWWWサーバから同じファイ
ル(index.html)を読もうとしたが、表示できずに別のメッセージが表示さ
れたところです。メッセージを読むと、
読みだし禁止 あなたにはこのサーバ上のファイル/~nakano/index.htmlに アクセスする権限がありません。
ホスト名 n79.cc.kumamoto-u.ac.jp で動作中の
WWWサーバ Apache バージョン1.3.26 より。 (ネットワークポート80番で受信しました。) |
---|
このメッセージからわかるように、このPCにインストールしたLinuxでは、 すでにWWWサーバが動作しているのです。 言い替えると、デフォルトでWWWサーバが起動する設定になっているわけ です。ただ、先に作成したファイルが読める状態ではないだけです。
上では、アクセス権の問題から、ネットワークを介してはファイルを見る ことができませんでした。これは、ファイルやディレクトリのアクセス権 が不足していることが考えられます。
そこで、今、関係がありそうなディレクトリは、問題のファイルから上へ たどっていくと、
先ほどのターミナルに戻って、
[nakano@n79 public_html]$ ls -ld /home/nakano/public_html/index.html -rw-r--r-- 1 nakano nakano 5 Sep 1 12:43 /home/nakano/public_html/index.html [nakano@n79 public_html]$ ls -ld /home/nakano/public_html drwxr-xr-x 4 nakano nakano 4096 Sep 2 15:05 /home/nakano/public_html/ [nakano@n79 public_html]$ ls -ld /home/nakano drwx------ 11 nakano nakano 4096 Sep 2 14:03 /home/nakano/ [nakano@n79 public_html]$ ls -ld /home drwxr-xr-x 5 root root 4096 Aug 30 23:33 /home/
上記から、ユーザのホームディレクトリ(/home/nakano)だけが、そのユー ザ自身しか読めず、そのディレクトリに入る(cd)こともできない状態になっ ていることがわかります。
それでは、ユーザのホームディレクトリ(/home/nakano)のアクセス権を chmod(p.140)コマンドで変更してみましょう。
[nakano@n79 public_html]$ chmod a+rx /home/nakano [nakano@n79 public_html]$ ls -ld /home/nakano drwxr-xr-x 11 nakano nakano 4096 Sep 2 14:03 /home/nakano/
アクセス権が、全ユーザに対して、読めてディレクトリへ入る(cd)ことが 可能になったことがわかります。
ここで先ほどWWWブラウザでアクセスした、 「n79.cc.kumamoto-u.ac.jp/~nakano/index.html」( 各自のサーバ名、ユーザ名を使用)を再読み込み(ボタンまたは表 示メニューより)してみましょう。すると、以下の画面になります。
これで、既にユーザが自分のホームページを開けるようになったことがわ かります。suコマンドを用いていないことからお分りのように、この作業 に、root権限は必要ありません。
次に、現在動作中のWWWサーバを止めてみましょう。(p.266)
[nakano@n79 public_html]$ su Password: [root@n79 public_html]# /etc/rc.d/init.d/httpd stop httpdを停止中: [ OK ]
先ほどWWWブラウザでアクセスした、 「n79.cc.kumamoto-u.ac.jp/~nakano/index.html」( 各自のサーバ名、ユーザ名を使用)を、再び、再読み込み(ボタン または表示メニューより)してみましょう。すると、今度は以下のダイア ログが表示され、アクセスできなくなったことがわかります。
WWWサーバを再び起動して、アクセスできることを確認しておきましょ う。(p.266)
[root@n79 public_html]# /etc/rc.d/init.d/httpd start httpdを起動中: [ OK ]
WWWサーバが動作するとしても、サーバにファイルを転送する方法がなければ、 他のコンピュータでコンテンツを作成することができません。このファイル転送 をするためのサーバプログラムの1つとして、ftpサーバをとりあげます。
[nakano@n79 public_html]$ rpm -qa | grep ftp ftp-0.17-6vl1 gftp-2.0.11-0vl1 lftp-2.4.8-0vl1 proftpd-1.2.5-0vl2 tftp-0.16-5vl1
以上のように5つみつかりましたが、ftp, gftp, lftp は通常のクライア ントプログラムで、windowsのftpやffftpのような役割りです。tftpは、 すこし特殊なftpのためのクライアントで、ここでproftp のみがftpサー バということになります。各々を詳しく知りたい場合、man, jman, tknamazu、インターネットでの情報検索等が役に立ちます。また、WWWブ ラウザや、ファイルマネージャがftpクライアントの機能の一部をもつこ ともあります。
ここでは、クライアントとして、gftpを例にします。これは、X上ではWindowsの ffftpのようにGUIをもちます。Xの利用できない環境や、gftp-text テキストコ マンドを用いれば、テキストコンソールでも使用できます。ただし、textモード で使用するならば、個人的にはlftp コマンドのほうがTABキーによる補完ができ て便利だとおもいます。また、ncftpをインストールするのもよいと思います。
gftpを起動してみましょう。
[nakano@n79 public_html]$ gftp &
以下のような画面が表示されますので、試しに、ホストの所に
ftp99.cc.kumamoto-u.ac.jp
と入力すると、接続されることを確認してください。
次に、自分のPCの名前 (???.cc.kumamoto-u.ac.jp) を、ホスト名に入力 すると、
n79.cc.kumamoto-u.ac.jpを探しています n79.cc.kumamoto-u.ac.jpを試行中:21 n79.cc.kumamoto-u.ac.jpへ接続できません: 接続を拒否されました 再び接続するまで, 30秒待ってください .....と下段に表示され、このサーバへは、デフォルトでは、少なくとも anonymous ftp (匿名ftp) 接続はできないことがわかります。
次に、自分のユーザ名とパスワードを入力してみましょう。
これも先ほどと同じメッセージが出てきます。すなわち、このサーバへは、 デフォルトでは、ftp (tp) 接続ができないことがわかります。
それでは、このPCで、ftpサーバは起動しているのでしょうか。
[nakano@n79 public_html]$ su Password: [root@n79 public_html]# /etc/rc.d/init.d/proftpd status proftpdは停止しています
起動していないことがわかります。それでは、起動して、設定をおこなっ てみましょう。
ここでは、ftpサーバとして、proftpd (p.244)をとりあげます。ただし、本家 RedHat は wu-ftpd という別のプログラムを用いており、RedHatにおける設定は かなりちがうと思われます。proftpの設定は、appache WWWサーバと非常によく 似ています。
まず、proftpdサーバを起動してみましょう。
[root@n79 public_html]# /etc/rc.d/init.d/proftpd start Was not suspended [ OK ]となり、起動したことが確認できます。
次に、gftpで、anonymous(匿名)ユーザとしてftp接続を試みましょう。す ると、gftpの下段に、
220 ProFTPD 1.2.5rc1 Server (ProFTPD Basic Configuration) [n79.cc.kumamoto-u.ac.jp] USER anonymous 331 Anonymous login ok, send your complete email address as your password. PASS xxxx 530-Unable to set anonymous privileges. 530 Login incorrect. n79.cc.kumamoto-u.ac.jpサイトから接続を切断していますと表示され、Unable to set anonymous privileges. すなわち、匿名ftp は権限がないと表示され、デフォルトでは、anonymous ftpが禁止されて いるらしい???ことがわかります。
次に、gftpでユーザ名とパスワードを入力して、接続しなおしてください。 今度は、
n79.cc.kumamoto-u.ac.jpを探しています n79.cc.kumamoto-u.ac.jpを試行中:21 n79.cc.kumamoto-u.ac.jpへ接続しました: 21 220 ProFTPD 1.2.5rc1 Server (ProFTPD Basic Configuration) [n79.cc.kumamoto-u.ac.jp] USER nakano 331 Password required for nakano. PASS xxxx 230 User nakano logged in. TYPE I 200 Type set to I. PWD 257 "/home/nakano" is current directory. PORT 133,95,45,79,128,164 200 PORT command successful. LIST -aL 150 Opening ASCII mode data connection for file list. 226 Transfer complete.となり、接続できました。つまり、proftpdさえ起動しておけば、既にユー ザによるftp転送は可能になるのです。
さて、それではLinux起動時に、自動的にproftpdが起動する設定はどうす ればよいのでしょう。
chkconfig コマンドを用いて、自動的にproftpdが起動する設定を行って みましょう。
[root@n79 public_html]# /sbin/chkconfig --list proftpd proftpd 0:off 1:off 2:off 3:off 4:off 5:off 6:off [root@n79 public_html]# /sbin/chkconfig proftpd on [root@n79 public_html]# /sbin/chkconfig --list proftpd proftpd 0:off 1:off 2:off 3:on 4:on 5:on 6:off設定が、変更されたことが確認できます。現在のLinuxの起動モードは、3 です。(/etc/inittab の runlevel を見れば確認できます。)
上記のような設定は、/usr/sbin/setup コマンドの中の「システムサービ ス設定」でも行えます。
この場合のpftpdの起動は、apache WWWサーバ同様に、サーバプログラ ムが常に起動しているものですが、アクセスがftpアクセスがあった時だ け起動するような設定もかのうです。この場合は、inetd経由で使うこと になります(p.245)。inetd経由で使う場合は、アクセス制限は、 /etc/hosts.deney, /etc/hosts.allow にも従うことになります。 ここでは、このような使用形態は省略します。
proftpdの設定は、/etc/proftpd.confで行います。
それでは、/etc/proftpd.confを編集してみ ましょう。
[nakano@n79 public_html]$ su Password: [root@n79 public_html]# cd /etc/ [root@n79 /etc]# cp proftpd.conf proftpd.conf.orig0 [root@n79 /etc]# emacs proftpd.conf&
まず、anonymous ftp の設定を見てみましょう。
<Anonymous ~ftp> (中略) </Anonymous>とあり、anonymous ftp を許可する設定がされています。さて、なぜ、 anonymous ftp ができないのでしょうか?
これは、やっかいな問題です。
このような場合は、マニュアルを調べたり、ドキュメントやネットワーク
で調べたり、誰かに聞くとか...
たとえば、参考になりそうなのは、
インターネット等もざっと見渡しましたが、解決策は見当たりません でした。このような場合は、あきらめるか、勉強だと思って、時間をきめ て、ちょっと自分で調べてみます。今回は、講習会の講師ということで、 調べざるおえません ^_~;;;
anonymousタグの、<Anonymous ~ftp> にある、「~ftp」(ftpは、 ユーザ名) の意味ですが、'~' ユーザがログイン後、認証されたホームディ レクトリに置き換わるとドキュメントに既述があります。では、ユーザ ftp のホームディレクトリはどこでしょう。
[root@n79 /etc]# grep ftp /etc/passwd ftp:x:14:50:FTP User:/var/ftp:/sbin/nologinということで、ユーザ ftp のホームディレクトリは、「/var/ftp」であ ることがわかります。ということは、先ほどの「~ftp」は、「/var/ftp」 を意味します。
では、「/var/ftp」はどうなっているのでしょう。
[root@n79 /etc]# ls /var/ftp ls: /var/ftp: そのようなファイルやディレクトリはありません
ということで、なぜanonymous ftp ができなかったかと言うと、 「anonymous ftp」で公開するディレクトリが「/var/ftp」となっている のに、実在しないからだったのです。これは、明らか にVine Linux パッケージのバグなので、まだ報告がなければ奉告しましょ う。
では、解決策ですが、次の3通り位が考えられます。
それでは、先ほど立ち上がっているemacsで、/etc/proftpd.conf を修整しましょ う。38行目の、
<Anonymous ~ftp>を、
<Anonymous /home/ftp>に書き直して、保存してください。
それでは、設定変更を有効にするため、proftpd を再起動しましょう。
[root@n79 /etc]# /etc/rc.d/init.d/proftpd restart Shutting down proftpd: Suspending NOW [ OK ] Allowing sessions again ]
ついでになにか公開ファイルを置いてみましょう。
[root@n79 /etc]# ls / > /home/ftp/test.txt
さて、では、gftpで再び、anonymous(匿名)ユーザとしてftp接続を試 みましょう。今度は、継り、test.txtというファイルが見れるはずです。 マウスの右クリックで出るメニューの閲覧で内容を確認してみましょう。 (gftpはキャッシュがきくため、必要に応じて、ツールメニューからクリ アしてください。)
一例として、anonymous ftp ができる範囲をIPアドレスで制限してみましょう。
Anonymousタグで囲まれた範囲
<Anonymous ~ftp> ..... </Anonymous>の中に、
<Limit LOGIN> Order allow, deny allow from 133.95.30. deny from all </Limit>を追加すると、133.95.30.???のユーザからのみアクセスできるようにな ります。詳しい設定は、http://www.infoscience.co.jp/technical/proftpd/reference.html#Allow等を見てください。
ここでは、上の例は確認ができませんので、たとえば隣のPCののIPを 書いてみましょう。
<Limit LOGIN> Order allow, deny allow from 133.95.30.??? deny from all </Limit>設定を反映させるために、proftpdを再起動し、自分のgftpでアクセスす ると、接続できなくなっているはずで、逆に隣からアクセスすると今度は、 接続できるようになっていることを確認してください。
anonymous ftp は、必要のないホストでは禁止しておいたほうがセキュリティ上、 安全です。
方法には、主に2通りありますが、
<Limit LOGIN> Order allow, deny # allow from 133.95. # allow from .cc.kumamoto-u.ac.jp deny from all </Limit>たとえば、上のようにしておけば、コメントを外すだけで、学内にのみ公 開したり、自分の組織内にのみに公開したりできます。proftpd を再起動 し、gftp でアクセスできないことを確認してください。
ユーザの ftp アクセスも、その経路上のマシンからなら、実はパスワードを盗 聴することが不可能ではありません。そこで、必要のないホストからのアクセス は禁止しておいたほうがセキュリティ上、安全です。今回の実習は学内対象です から、学外からはアクセスできないように設定しておきましょう。
anonymous の設定で予想がつくとは思いますが、今度は、Anonymous タグで囲まれた範囲の外に、<Limit LOGIN>を置けばよいのです。 場所は、
<Directory /*> AllowOverwrite on </Directory>の後あたりに、
<Limit LOGIN> Order allow, deny allow from 133.95. deny from all </Limit>を、挿入して、proftpd を再起動しておいてください。
設定のバックアップを取り敢えず、 proftpd.conf.20020904 という名前で、とっておきましょう。
[root@n79 /etc]# cp proftpd.conf proftpd.conf.20020904
なお、上の「AllowOverwrite」がON になっているので、個別のディ レクトリに、「.ftpaccess」という名前のファイルを置くことで、アクセ ス制限等を、ディレクトリ毎に変更することができます。方法は省略しま すが、後で紹介する、「.ftpaccess」によく似ています。
ここでは、広く利用されているWWWサーバの Apache (p.261) を使用します。 最初に見ましたように、デフォルトで既に起動しています。
先ほどは、「n79.cc.kumamoto-u.ac.jp/~nakano/index.html」(各自のサーバ名、ユーザ名を使用)をMozillaで開く と、ユーザのホームページが表示されるのを確認しました。
今度は、このサーバのトップページ「n79.cc.kumamoto-u.ac.jp/」 (各自のサーバ名を使用)で、アクセスしてみ ましょう。すると、以下のようになります。
さて、このファイルはどこにあるのでしょうか? どこで、設定されて いるのでしょうか? 設定ファイルの主なものは、 /etc/httpd/conf/httpd.confです。
さっそく、emacs編集してみましょう。
[root@n79 /etc]# cd /etc/httpd/conf/ [root@n79 conf]# cp httpd.conf httpd.conf.orig0 [root@n79 conf]# emacs httpd.conf &
以下に示すように、409行目(emacs下段にL409と表示される)に、ルートディ レクトリが指定されています。
# DocumentRoot: The directory out of which you will serve your # documents. By default, all requests are taken from this directory, but # symbolic links and aliases may be used to point to other locations. # DocumentRoot /home/httpd/htmlということで、Mozillaで、file:///home/httpd/html/index.html を表示 させると、先ほどと同じページが表示されることを確認してください。
つまり、このWWWサーバのトップページを書き変えたいなら、このファ イル(/home/httpd/html/index.html)を書き変えるか、設定ファイル (/etc/httpd/conf/httpd.conf)の、DocumentRoot を変更すればよいわけ です。
Apacheの基本的なアクセス制限を行ってみましょう。ただし、「/」ディレクト リのAllowOverride が、None ではない場合は、ディレクトリ別に設定が可能な 項目もあります。
まず、参考になる場所を、挙げておきます。先ほどのトップページに もマニュアルはありましたが、ローカルディスクにあるのでファイルの方 を使います。
まず、トップページを学内からのアクセスに制限します。 456行目の Allow from all について、
<Directory /home/httpd/html> ...(中略)... Order allow,deny Allow from all </Directory>を、
<Directory /home/httpd/html> ...(中略)... Order allow,deny Allow from 133.95. </Directory>と書き変えます。
次に、デフォルトの制限を、学内からにします。 421行目の後に2行追加します。
<Directory /> Options FollowSymLinks AllowOverride None </Directory>を、
<Directory /> Options FollowSymLinks AllowOverride None Order allow,deny Allow from 133.95. </Directory>と、2行追加します。
Apacheで公開するWWWページをディレクトリごとに制限をかけたり、緩めたり、 cgiの実行を許可したりするための設定を行います。
先ほどの、421行あたりの、AllowOverrideを変更して、設定の上書き を、Options と Limit に関し可能にします。
<Directory /> Options FollowSymLinks AllowOverride None Order allow,deny Allow from 133.95. </Directory>を、
<Directory /> Options FollowSymLinks AllowOverride Options Limit Order allow,deny Allow from 133.95. </Directory>にします。
さらに、cgi プログラムを認識できるように、829行目あたりの #AddHandler cgi-script .cgiのコメント記号#を消します。
# To use CGI scripts: # #AddHandler cgi-script .cgiを、
# To use CGI scripts: # AddHandler cgi-script .cgiにします。
設定のバックアップを一応 httpd.conf.20020904 にとって、有効にするために、 apache を再起動します。
[root@n79 conf]# cp httpd.conf httpd.conf.20020904 [root@n79 conf]# /etc/rc.d/init.d/httpd restart httpdを停止中: [ OK ] httpdを起動中: [ OK ]
まず、rootから抜ける(exit または C-d)か、あたらしいターミナルを開 いて、ホームディレクトリの下の public_html へ移動します。
[root@n79 /etc]# exit exit [nakano@n79 nakano]$ cd ~/public_html
次に、テスト用のディレクトリ test1 を作成し、そこへ移動して、 index.html ファイルを emacs で作成します。
[nakano@n79 public_html]$ mkdir test1 [nakano@n79 test1]$ emacs index.html&ファイルのソースは、
<html> <head> <title> test1 </title> </head> <body bgcolor="Silver"> <h1>TEST1</h1> </body> </html>です。
「n79.cc.kumamoto-u.ac.jp/~nakano/test1/」(各自のサーバ名、ユーザ名を使用)をMozillaで開く と、今作成したページが表示されるのを確認しましょう。
次に、emacsを一旦終了するか、あたらしいファイルを開くことで、「. htaccess」という名前のファイルを作成し、保存します。
[nakano@n79 test1]$ emacs .htaccess &ファイルのソースは、(??? は隣のPCのIP)
order allow,deny allow from 133.95.30.???です。
自分では、アクセスできなくなり、隣からのみアクセスできるように なったことを確認してください。お分りのように、この場合は、apacheの 再起動は必要ありません。
次に、テスト用のディレクトリ test2 を public_html の下に作成し、 そこへ移動して、 index.cgi ファイルを emacs で作成します。
[nakano@n79 test1]$ cd ../ [nakano@n79 public_html]$ mkdir test2 [nakano@n79 public_html]$ cd test2 [nakano@n79 test2]$ emacs index.cgi &ファイルのソースは、
#!/usr/bin/perl print "Content-type: text/html\n\n"; print "<html><body><h1>"; system("LANG=ja_JP.eucJP /bin/date"); print "</h1></body></html>\n";です。( n n の空白は\(バックスラッシュ)です)
このファイルに実行属性を与えなければプログラムとして実行できないた め、実行属性を与えて、動作を確認しましょう。
[nakano@n79 test2]$ chmod a+x index.cgi [nakano@n79 test2]$ ./index.cgi Content-type: text/html <html><body><h1>2002年 9月 3日 火曜日 17:00:34 JST </h1></body></html>日付を表示するHTMLファイルを出力することがわかります。
「n79.cc.kumamoto-u.ac.jp/~nakano/test2/」(各自のサーバ名、ユーザ名を使用)をMozillaで開く と、どうなるでしょう。Forbiddenとなってし まいました。そうです。cgiの実行はデフォルトでは許可されていないの です。
そこで、emacsを一旦終了するか、あたらしいファイルを開くことで、「. htaccess」という名前のファイルを、また作成し、保存します。
[nakano@n79 test2]$ emacs .htaccess &ファイルのソースは、(??? は隣のPCのIP)
order deny,allow allow from 133.95.30.??? Options +ExecCGIです。
今度は、以下のような表示を見ることができるでしょう。再読みこみする たびに、時刻が変わり、cgiプログラムが動作していることが確認できます。
telnet、pop、ftp 等は、生のパスワードがネットワークの転送経路上に流れる といった本質的に危険な部分を含んでいる。ssh (セキュアシェル) (p.256) を 利用した、telnet にかわるlogin のslogin や、ネットワーク越しにも使える cp の暗号化された scp を使うとより安全にリモートログインやプログラムの転 送が行える。
隣のPCから、slogin でログインしてみましょう。
[nakano@vite nakano]$ slogin n79 The authenticity of host 'n79 (133.95.45.79)' can't be established. RSA key fingerprint is 7c:8a:13:6c:50:5c:f7:44:e4:8b:f9:8d:b1:f3:e9:28. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added 'n79,133.95.45.79' (RSA) to the list of known hosts. nakano@n79's password: Last login: Tue Sep 3 15:34:35 2002 from nn3dというように、もう既に使える状態になっています。 最後は、exitまたは、C-d で抜けてください。
Windows系のPCから、使えるアプリケーションとして、TeraTermPro と、
ttssh の組み合わせだと、日本語も含めて使用できます。
参考ページ
scpでファイルを転送してみましょう。たとえば、ホームディレクトリの public_html を html0904 として、他のPCへ転送します。 ここで、分かるように、2番目の引数の頭に、相手のホスト名が来るだけ で、他は cp コマンドと同じです。ただし、-a オプションはつかえませ ん。
[nakano@n79 nakano]$ scp -r public_html vite.cc.kumamoto-u.ac.jp:html0904 The authenticity of host 'vite.cc.kumamoto-u.ac.jp (133.95.45.72)' can't be established. RSA key fingerprint is 21:3a:40:68:af:81:a1:f6:77:44:d0:42:c7:60:ad:04. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added 'vite.cc.kumamoto-u.ac.jp' (RSA) to the list of known hosts. nakano@vite.cc.kumamoto-u.ac.jp's password: index.html 100% |*****************************| 5 00:00 .htaccess 100% |*****************************| 59 00:00 index.cgi 100% |*****************************| 148 00:00 .......
Windows系のPCから、使えるアプリケーションとして、たとえば
Cygwin があります。UNIX のさまざまなフリーソフトウェアを Windows
に移植したもので、ssh, slogin, scp, tar... といた多くの有用なアプ
リケーションがWindows系でも使えるようになります。最近では、X
window System も起動できますが、残念ながら標準では英語のみです。
参考ページ