UNIX操作方法

訪問者の登録CGIを例にして

技術部  support@cyborg.ne.jp
support@cyborg.ne.jp

   




1.はじめに.

 4月6日よりCYBORGでもシェルを公開しました。今まではFTPのみ公開でしたので、ホームページの開発には制約も多く今まで会員の皆様にはご迷惑をおかけしました。今後はファイルのパーミッション変更などは事務局を通さなくとも自分でできるようになります。逆にいいますと、ご自分でファイルのパーミッションの変更をしなければならないとも言えます。事務局も今後忙しくなると予想されます。可能な限りアドバイス等はさせていただきますが、タイムリーな反応が得にくくなるやもしれません。となりますと、ご自分でUNIXのコマンドを叩く方が早い解決策ということになります。

 とはいえ、UNIXを触ったことがない会員さんに、いきなり、「ファイルのパーミッションの変更はご自分でやってください」とも言えません。ここでは、『訪問者の登録』というCYBORGで公開しておりますCGIプログラムの設定を例にして、そのへんを解説したいと思います。


謝辞:「訪問者の登録」CGIプログラムはネットサーフレスキュでご活躍中の谷中氏のご厚意により掲載されているものです。



2.TELNETソフトの用意

 TELNETをするためには当然 TELNET 用ソフトが必要です。私は teraterm というソフトを愛用してますので、このソフトを使用して話を進めますが、ご自分で好きなソフトをお使いになってください。95では telnet.exe というのが標準で添付されてきますので、それを使うのもいいでしょうし、他にもいろいろフリーソフトやシェアウェアソフトがあります。MACでは、よく知らないのですが、NCSA telnet-J というのがあるみたいです。


3.サーバーにログイン

(図0)

Teraterm を起動するとこのようにどのホストへ接続するかを設定する画面になります。他のTelnetソフトも同様だと思います。ここで、WWWサーバー名を入力します。


すると、CYBORGのWWWサーバーのログインプロンプトが現れます。ログインするためには、自分のIDとパスワードを入力しなければなりません。

IDは必ず小文字で入力してください。大文字で入力してもたぶんログインできると思いますが、その後の動作がとても不安定になります。

パスワードはエコーバックされません。正確に打ち込んでください。

うまくログインできると下図のようになるはずです。

注意:ここでは私西田を例にしているので下のような表示になっています。
   しつこいようですが、nishida というところはご自分のIDを入力してください。

(図1)

さて、うまくログインできたとして、次にやるべきことはいろいろありますが、まず、ディレクトリという概念を理解しなければなりません。MACや95しか触ったことの無い方は ディレクトリ=フォルダ と置き換えれば理解しやすいかもしれません。

ディレクトリはツリー構造になっています。ディレクトリの中には何個でもファイルを置けます。また、ディレクトリの下にはさらに何個でもディレクトリを置くことも出来ます。

UNIXでは各ユーザーに1つディレクトリを割り当てます。そのディレクトリ名をホームディレクトリと呼びます。WWWサーバーにログインすると必ずユーザーはホームディレクトリに居ます。ホームディレクトリ名は「入会案内メール」の中に記してありますのでご確認ください。

試しに pwd というコマンド実行してます。下の例ですと私西田はホームディレクトリ /news/nishida に今居ることがわかります。

注意:「入会案内メール」では /home/ご自分のID となっているかもしれませんが、/news/ご自分のID と読み替えてください。なお、この名称は以前WWWサーバーがニュースサーバーだったことに起因します。WWWサーバーを立ち上げた時、今となってはなぜか不明なのですが、ユーザー各人のホームディレクトリを /news というディレクトリの下に作ってしまい、以後それが踏襲されているのです。

(図2)
 pwd:現在どのディレクトリにいるかを表示


WWWサーバーホストには複数のユーザーがアクセスできます。パソコンは普通自分一人だけが管理しますので、他人のファイルと自分のファイルを区別するという意識が薄いと思います。ですが、UNIXのような多数の人がアクセスするような環境では、自分と他人を明確に意識しなければなりません。そうしないと、思わぬ被害にあったり、被害を与えたりします。しつこいようですが、UNIXのシェルを使うということはパソコンを使っている時のような感覚ではいけないということを覚えておいてください。

そこで、自分と他人を区別して管理しやすくするために、各人にディレクトリを割り当て、そのディレクトリの中だったらどんなファイルを作ろうが、ディレクトリの下にさらにディレクトリを作ろうがご自由にどうぞというのが「ホームディレクトリ」です。

1つのディレクトリの中にいろんな人の所有するファイルがごちゃ混ぜになってたら、どれがどれなのか分からなくなっちゃいますよね。そこで、「ホームディレクトリ」という考えかたが生まれたのだと思います。




さて、WWWサーバーになぜログインしたかといえばもちろんホームページを開設するためです。CYBORGでのホームページ開設にはいろいろ決まり事があります。

その1)ホームページはホームディレクトリの中の public_html というディレクトリの下になければならない。

その2)http://www.cyborg.ne.jp/~自分のID で参照されるファイルは ホームディレクトリ/public_html/index.html である。



では、ホームディレクトリの下には pulic_html というディレクトリはあるでしょうか?下の図を見てください。"ls -l " としてますが、返ってきたのは "Total 0" という答えだけです。つまり、/news/nishida というディレクトリの下には index.html というディレクトリはありません。もし、FTPプログラムで既に作ってあったとしたら別ですが、初めてWWWサーバーにログインした場合はこのような状態のはずです。

(図3)


無ければ作らなければなりません。

mkdir pubilc_html と打ち込みます。

正常に打ち込みリターンキーを押せば、プロンプトのみ返るはずです。
そこで、さきほどのように ls -l としてみます。

drwxr-xr-x 2 nishida Apr 7 20:22 public_html

  (注意:FTPプログラムでディレクトリを作ると drwxrwxrwx となっているはずです。)

と表示されました。最初の drwxr-xr-x が属性を表しています。dはディレクトリを意味して、rwxr-xr-x は自分は書き換え自由だが、他の人は読み込みと実行しかできないという意味です。

注意:ディレクトリに与えられる属性の本当の意味は違うのですが、ここでは簡単に話を進めるため、あえて、誤まりを犯します。詳しくはUNIXの教科書で勉強する必要があります。

この属性では、このディレクトリの下の隠蔽がうまくいきません。どううまくいかないかの説明は省きます。とにかくディレクトリを作ったら下の例のように chmod 705 public_html のように 705属性を与えてください。これは「このディレクトリの下では他人には書き込みは不可能にするが、読み込みやホームページの表示はできるようにしてもいい」という指定です。

こうすることにより、不慮の事故から自分を守ることができます。ホームページを開設するにはこの程度の保護はするべきでしょう。

ここで出てきたコマンドのまとめ
    ls -l ディレクトリ内のファイルやディレクトリをロング形式で表示
    mkdir 新しくディレクトリを作る
    chmod ファイルやディレクトリの属性を変更





ホームディレクトリの中に public_html というディレクトリを作りました。これで、ホームページを開設する第一段階はクリアしました。

次にホームページを実際に置くディレクトリである public_html に移動してみます。
下の図をご覧ください。cd public_html としています。これは 「public_html というディレクトリに移動する」という意味のコマンドです。

その後 pwd というコマンドを打ちました。するとさっきまでは /news/nishida だったのが、今度は /news/nishida/public_html というのに変わっています。さっきまでは、news というディレクトリの下にある nishida というディレクトリに居たのですが、 nishida というディレクトリのさらに下の public_html というディレクトリに今居るわけです。つまり / (スラッシュと読みます) という文字はディレクトリとの境目を表しているわけです。

注意:DOSではディレクトリの境目は ¥ 記号ですが、UNIXで ¥記号はエスケープ文字として機能しますので、意味が違います

さて、先ほどのように ls -l で、ディレクトリの中に何かファイルやディレクトリがあるか確かめてみましょう。まだ作ったばかりですから当然 Total 0 と返ってくるはずです。


ここで出てきたコマンドのまとめ
    ls -l ディレクトリ内のファイルやディレクトリをロング形式で表示
    cd   ディレクトリに移動
    pwd  今どのディレクトリにいるかを表示
(図4)









ただファイルのパーミッションを変更するだけではおもしろくないので、もう少し実用的なことをしたいと思います。「訪問者の登録」とうCGIプログラムをサポートで紹介しています。ネットサーフレスキューでご活躍中の谷中氏作のフリーウェアソフトです。これは自分のホームページを見てくれた人がコメントを残していけるようにするためのソフトです。この設定を通して、UNIXを学んで見ましょう。

まず、「訪問者の登録」用のファイルをインストールするため、あとあと管理を簡単にするためにディレクトリを作りましょう。 mkdir cgi-bin とします。

今作ったディレクトリの属性を確認します。 ls -l としましょう。public_html を作った時と同じように、このディレクトリも drwxr-xr-x という属性になっています。public_html と同じように属性変更します。 chmod 701 とします。再度 ls -l としてみましょう。 drwx-----x となっていることを確認します。



(図5)






注意:public_html の時は drwx---r-x でしたが、ここでは敢えて、drwx-----x という属性にしてます。が、どちらでも構わないかもしれません。この区別を説明すると、httpdの説明まで始めなければならないので、割愛します。とにかく、最低705属性が望ましいということです。777属性はよくないです。









「訪問者の登録」CGIプログラムを格納するディレクトリの作成と属性の設定は完了しました。ちょっと順序がごちゃごちゃですが、次に「訪問者の登録」CGIプログラムを呼び出すHTMLファイルを作ることにしましょう。

実は、ちょっとズルして、これはローカルに既に作ってあり、FTPプログラムで今いるディレクトリへPUTしたことにして、 ls -l コマンドで確認すると index.html というファイルが出来ていることにしてしましょう。

(図6)




注意:WINDOWS3.1では拡張子が3文字までという制限があるため、もしかすると、index.htm という名前でPUTされている可能性もあります。この場合は、 mv index.htm index.html というようにして名前を変更する必要があります。CYBORGのWWWサーバーは、ディレクトリ名で終わるURLの場合 index.html という名前を探して表示しようとします。index.htm だと WWWサーバーは何を表示していいのかわからないのでディレクトリ一覧を表示しようとします。


ということで、今ずるしてFTPで持ってきたファイルの中身はこうなっています。単にcgi-bin ディレクトリの中にある comment.html というHTML形式のファイルを呼び出すためだけのホームページです。


(図7)






では、いままでと同じように index.html というファイルの属性を自分だけ書き込みができて、他の人は読むだけできるように設定しましょう。

chmod og-w とやってから、ls -l で属性を確認してください。

(図8)




ここで出てきたコマンドのまとめ
    mv   ファイルやディレクトリの移動。名前の変更にも使う
    cat  ファイルの中身を画面(標準出力ともいう)に出力する。

    chmod og-w 他人には書き込みができないように設定する方法
          上の例では chmod 744 としても同じ意味になる









さて、今度はCGIプログラムのインストール作業をしましょう。まず、作業を簡単にしかも間違えずにするために、cgi-bin ディレクトリに移動しましょう。cd cgi-bin とします。

ディレクトリ移動したら、自分の意図したディレクトリに本当にいるかどうかの確認のために pwd コマンドで自分の位置を確認してください。

ついでに、今いるディレクトリにはどういうファイルやディレクトリがあるかを確認するために ls -l としてみましょう。今作ったばかりですから、何もないはずですよね。

(図9)




CGIプログラムの雛形は /news/support/public_html/cgi-bin/samples/ というディレクトリの下にあります。そのファイルを全て、今いるディレクトリの下にコピーします。

cp /news/support/public_html/cgi-bin/samples/* . とします。*というのは全てという意味です。ピリオドは今自分がいるディレクトリという意味です。

うまくコピーできたかどうかを、ls -l コマンドで確認してみましょう。下の図のように表示されればOKです。

いままではファイルのモードを変更する必要があったのですが、今コピーしたファイルの属性を ls -l で見る限り変更の必要はなさそうです。

(図10)




☆☆☆☆☆☆間違えました☆☆☆☆☆☆
ここの中で、visitors.dat というファイルは他の人にも書き込み可能にしなければならないので、chmod og+w visitors.dat として下さい。
☆☆☆☆☆☆間違えました☆☆☆☆☆☆


ここで出てきたコマンドや特殊文字のまとめ
    cp   ファイルのコピー
    *   全てという意味の制御文字。詳しくはUNIXの教科書の正規表現の項を参照
    .   現在いるディレクトリ位置を表す。対して .. は一つ上のディレクトリを表す









「訪問者の登録」のソースプログラムはほとんどいじらなくてもそのまま使えます。ただ、regist.cgi というプログラムの中で、一個所だけどうしても修正しなければならないところがあります。そこを修正するために、UNIX標準スクリーンエディタを使ってみましょう。

vi regist.cgi とします。

(図11)






画面いっぱいにファイルの中身が表示されたはずです。カーソルは左上に点滅しているはずです。まず、修正するところは赤いところの support というところです。ここを自分の ID に変更しなければなりません。

(図12)

DOSやWINDOWSやMACだったら、ここで、カーソル移動キーを使いたくなりますが、もしかするとカーソル移動キーでは動かないかもしれません。もちろん動く場合もありますが、お手持ちの telnet ソフトはそこまでエミュレートしてないかもしれないので、ここは カーソル移動キーをhJKLの各キーで移動してみましょう。

j というキーを11回押します。カーソルが目的行に移動したはずです。

l(エル)というキーを15回押します。カーソルが目的のカラムに移動したはずです。


(図13)

ここで、support という文字列を削除しましょう。

xというキーを7回押します。supportというのが消えてしまったはずです。

(図14)




今度は今消したところに自分のIDを挿入します。

iというキーを1回だけ押します。画面では何の変化もありませんね。そのまま、自分のIDを打ち込みます。ここでは私のID nishida と打ち込みました。

入力が終わったらエスケープキーを押します。エスケープキーは挿入モードの終了を宣言するものです。

編集中にエスケープキーを押したかどうかわからなくなる時がよくあるのですが、確認するためにはもう一度エスケープキーを押してピっと音がするのを確認することで、エスケープキーを押しているたかどうか(コマンドモードか、挿入モードかともいいます)が分かります。


(図15)




最後に大文字のZを2回押します。これはファイルをセーブして終了というコマンドです。ファイル名と行数、バイト数を表示してシェルに戻れば正常に終了したことを意味します。


VIコマンドのまとめ

  (コマンドモード)
    h   カーソル左移動
    j   カーソル下移動
    k   カーソル上移動
    l   カーソル右移動
    x   カーソル位置の1文字削除
    i   カーソル位置に文字挿入モード開始
  (挿入モード)
    esc  挿入モードの終了。コマンドモードへ。

(図16)













さて、最後にSSIの機能を実現するためにはちょっと特殊な作業をしなければなりません。.htaccess というファイルに「SSI機能を認めるファイルは *.html という名前のファイルにしますよ」と宣言しなければなりません。

このファイルは /news/support/public_html というディレクトリの下にあります。これをコピーします。今いる cgi-bin というディレクトリにコピーしてもいいのですが、あとあとのことを考えて、一つ上のディレクトリにコピーしましょう。


cd .. とします。これは1つ上のディレクトリに移動することを意味しています。

pwd コマンドで1つ上のディレクトリに移動したことを確認します。

(図17)




cp /news/support/public_html/.htaccess . とします。ピリオドは今居るディレクトリという意味です。

うまくコピーできたかどうかを ls -l として確かめましょう。

表示されませんね。実はファイル名の頭にピリオドがあるファイルは ls -l だけでは表示されないのです。これを表示させるには、 ls -la とします。こうすると頭にピリオドがあるファイルでも表示させることができます。

ファイルの属性には特に変更の必要はないようです。

(図18)




では、このファイルの中身を見てみましょう。cat .htpasswd としてみます。 たった一行だけ宣言文があります。これは「 *.html というファイルにのみSSI機能を認める」という意味です。

(図19)




ここで出てきたコマンドのまとめ
    ls -la  隠れファイルもロング形式で表示する









さて、ここまで、で一応サーバー側での作業は終了です。

exit として、telnet を抜けましょう。










お手持ちのブラウザで今編集したHTMLファイルを動かしてみましょう

(図20)

(図21)

こんあ感じで動けばいいはずですが、実際に訪問者の登録をするとたぶんいろいろ問題が発生するかもしれませんが、それはたぶん、どっかに操作ミスがあるはずです。もしうまくいかない場合はもう一度このドキュメントを読み直して、みてください。


以上










登録日 96/04/08
修正日 ../../..
掲載責任者 技術部 西田弘範


  禁無断転載  
  転載する場合は事前に報告のこと