Last-modified: 2017/09/22 19:01:29.

1 提供するサービス

学生・教員が使える HTTP サービスを提供します。 CGI, PHP も使えます。 以下の用途での利用実績があります。

公開範囲はインターネットと C502 LAN の両方です。 特別な設定を行わなければ情報はインターネットにも公開されるということを頭に置いておいてください。 たとえば学生の成績に関する情報や、 ライセンス上再配布不可なプログラムなどはインターネットに置くべきではないので、 然るべきアクセス制限を行う必要があります。 アクセス制限の設定方法については後述します。

HTTP に限らず、教育上有用なサービスがあれば提供できるかもしれません。 管理者に相談してみてください。

2 管理者

管理者は岸田です。

3 利用の手引き

以下に実際に利用する際の順序に沿って説明をします。

このドキュメントは急いで作ったのでかなり不親切になっていると思います。 「やりたいことがあるけど上手くいかない」などの場合は遠慮なく管理者まで連絡してください。 「自分はちょっとはまったけどクリアできた。この文章をこう修正したらもっと分かり易いのに」という指摘も大歓迎です。

3.1 アカウント作成

サーバを利用したい場合、作成したいアカウント名を管理者に連絡してください。

アカウントの作成方針は特に定めていません。 教員個人ごとに作っても良いですし、複数人数で分担する講義用にアカウントを作りたいのならばそれも可です。 1人で持つ講義ならば、教員個人名(e.g., kishida )でアカウントを作った方が後々便利だと思うのでそれを勧めますが、 各人の判断にお任せします。 管理者は要求のあったアカウントを作ります。

3.2 ログイン

インターネットに接続されている PC ならば、 その PC から C502 サーバ( c502.mech.eng.osaka-cu.ac.jp )にアクセスできます。 ログインするためには SSH を使用してください。 Windows から SSH を使うには putty などを使うと良いと思います。 使い方は適当に google などで調べられると思います。

3.3 パスワード変更

作成したアカウントに対する初期パスワードは管理者が適当に決めます。 この初期パスワードを連絡しますので、初回ログイン時に passwd コマンドで自分でパスワードを再設定してください。 これ以降、管理者がユーザのパスワードを知ることはありません。

3.4 講義用ページの作成

/home/ 直下に作成したアカウント名でホームディレクトリが生成されている筈です。 (e.g., /home/kishida/ ) ホームディレクトリ以下はユーザの自由にして頂いて結構です。

ホームディレクトリに public_html というディレクトリを作ると、これがウェブ公開用ディレクトリになります。 ディレクトリを作るには mkdir コマンドを使います。 (e.g., mkdir /home/kishida/public_html ) まず、index.html を作りましょう。 エディタは vim と emacs がインストールされています。 (e.g., emacs /home/kishida/public_html/index.html ) HTML の文法などについては「ホームページ作成」とかで google などで調べるか、他のユーザの public_html を参考にしてみてください。 (e.g., /home/cpstaff/public_html/index.html )

3.5 ファイル転送

C502 サーバ上でファイルをいじるのが大変ならば、手元のコンピュータで作ったファイルを転送することもできます。 その場合は SCP が使えます。 Windows で SCP を使うには Winscp を使うのが良いと思います。 使い方は適当に google などで調べられると思います。

著作権が外部にあるデータの転送は、特にご注意ください。 学生にだけ公開したい場合などには、「アクセス制限」の項などもご参考ください。

3.6 アクセス制限

以下のように公開範囲を制限したい場合を想定して説明します。 /home/cpstaff/public_html/ 以下が参考になると思います。

external ディレクトリは特にいじる必要はありません。

internal ディレクトリに .htaccess ファイルを作成し、以下のように記述します。

AuthType Basic
AuthName "Restricted Files"
AuthUserFile /home/cpstaff/httpPasswords
Require user comp-prog

Satisfy any

order deny,allow
deny from all
allow from 192.168.11.

以下の点に注意してください。

コマンドラインで以下を実行してパスワードファイルを作成します。 ただし、comp-prog は .htaccess ファイルで指定したユーザ名になります。 パスワードファイルはホームディレクトリ直下に httpPasswords というファイル名で生成される筈です。

htpasswd -c ~/httpPasswords comp-prog

以上で望む動作が得られる筈ですので、確認してください。

(注1) http 閲覧用のユーザ名とパスワードはセキュリティの堅牢性が比較的弱い部分です。 この部分をログイン用カアウント名とパスワードに一致させていると、 http 閲覧 用の部分で破られたアカウント名とパスワードで SSH ログインされてしまいます。

3.7 課題提出CGI

/home/cpstaff/public_html/external に submission.html と upload.php (兼子先生作)があります。 これらを適当なディレクトリに置き、以下の修正を加えてください。

  1. 「chmod 755 upload.php」コマンドで実行権限を開く。
  2. upload.php の 12行目にある /home/cpstaff というホームディレクトリの記述を自 分のホームディレクトリ以下の適当なディレクトリ (e.g., /home/kishida/uploadFiles )に修正。
  3. 「chmod 775 /home/kishida/uploadFiles」コマンドで保存ディレクトリ (この場合、/home/kishida/uploadFiles )のパーミッションを修正。
  4. 管理者に以下の実行を依頼。「chgrp www-data /home/kishida/uploadFiles」
  5. submission.html の学籍番号リスト、課題リストなどを適宜修正。

showUploadList.php(提出済のファイル確認用) も同様に使用できるようにしておくと良いでしょう。

3.7.1 トラブルシューティング:「CGI が保存したファイルを削除できない」

環境の言語設定がうまくいっていないとなるようです。 まず、シェルからのメッセージを正常に読めるようにしましょう。 zsh を使っている場合、

export LANG=C
export LC_ALL=C

で少なくともそのログインに関しては英語になる筈なので、メッセージを確認し、以下 のようだったら y で消える筈です。

/bin/rm: remove write-protected regular file `foo.txt'? y

メッセージが化けるような状況では、「y」と打っても消えてくれないことがあるようです。

なお、UNIX ではファイルの作成・削除はそのファイル自体のパーミッションではなく、 属するディレクトリのパーミッションで決定されます。 なので、 /home/kishida/bar.txt というように kishida が write パーミッションを持っている /home/kishida ディレクトリに、所有者 www-data で 644 パーミッションな bar.txt ファイルがあった場合、 kishida は bar.txt を削除することができます。

3.7.2 トラブルシューティング:「保存するファイルの所有者が www-data なんだけど、自動で任意のユーザにできないか?」

かなり無理っぽいです。 もし所有者が重要な場面があれば、手動で cp でコピーして、 オリジナルの方を削除するなど、適当に対処してください。

ちなみに、 www サーバ(Apache) は www-data というユーザアカウントで動作しています。 これが CGI 経由で作成されるファイルの所有者が www-data になる理由です。 これを www-data 以外の(たとえば kishida という)ユーザで動作するようにするにはそのユーザ自身で Apache を起動しなければなりません。 ユーザごとに Apache を起動する方法も技術的には可能かもしれませんが、かなり面倒なことになりそうなのでやめた方が良いと思います。 そこまでやるなら別個にサーバを立てた方が早くてラクだと思うくらいです。

所有者 www-data として作られたファイルの読み書きに不自由するというのは グーグル検索によるとそれなりによくある問題のようで、 削除用 php インターフェイスを作るとか、 php 内でパーミッションを 666 にしてしまう、 ということもしばしば行われているようです。

3.7.3 トラブルシューティング:「アップロードファイルのサイズ制限は?」

現在 20MB より大きなファイルをアップロードできないようにしています。 これより大きなサイズが必要な場合は管理者までご相談ください。

3.7.4 トラブルシューティング:「アップロードしたファイルのサイズがゼロ」

オンライン提出させた宿題ファイルに「サイズ0」で読めないものがあった、 という事例がありました。 通信が途切れたとか,ファイル名に使ってはいけない文字が含まれていたなども考えられますが、 詳細な原因は不明のままです。 吉岡先生は提出したファイルサイズを確認させるという方法で対処なさいました。 以下のスクリプトが参考になるかもしれません。

~yoshioka/ms/showUploadList_HW.php

3.8 出席登録 CGI

/home/cpstaff/public_html/internal/rollcall/ に兼子先生作の出欠確認システムが入っています。 適宜修正してご使用頂ければ良いと思います。

3.9 wiki

使用する Wiki エンジンを決めて、そのインストール方法に従ってやってみてください。

3.10 トップページの修正

サーバのトップページは http://c502.mech.eng.osaka-cu.ac.jp/ のようになっています。 このページに自分で作成したトップページへのリンクを作成してください。 このファイルの実体は /var/www/index.html になります。 書き込み許可はログインできる全てのユーザに開かれています。 適宜、管理者への報告なしに書き換えて頂いて構いません。

4 その他事項

FTP サービスは提供しません。 FTP はログイン時にパスワードが平文で流れ、このサーバではそのパスワードで ssh ログインができてしまいます。 ssh ログインできるということはこのサーバを踏み台にどこかのサーバを攻撃するなど悪意を持った行動が可能になります。 このためそもそもセキュリティの低い FTP は開かないことにしています。 ファイルのやり取りには scp や sftp を使ってください。

telnet も FTP と同様、不可にしています。