ハードなソフトの話

アクセスカウンタ

zoom RSS CGIが実行できるようにFTPサーバー上のファイルの属性を自動的に変更する

<<   作成日時 : 2006/03/21 23:35   >>

ブログ気持玉 0 / トラックバック 0 / コメント 2

むかし、むかし、インターネット・サービス・プロバイダー(NTT OCNとか、DIONとか、@NiftyとかBiglobeとかのことね。以降ISP)でCGIなんかを作るとき、ファイル属性の変更はTelnetでやっていた。しかし、今となってはtelnetはセキュリティ上、危険すぎるのでほとんどの場合は使えない。
@Niftyの@Homepageで、CGIファイルをどうやって実行可能にするかという説明を見ると、「FFFTP()とか、NextFTPを使ってファイル属性を実行にしてください」といったことが書いてあった。
しかし、いろんなPCを使っている私としては、わざわざ、いろいろなソフトをインストールする気がしない。
Internet Explorer(以降IE) は FTP をサポートしている。そこで、IEのアドレスバーで、ftp:ftpserer.comなどとぶち込み、FTPサーバー上のファイルを右クリックしてみたら、「ファイル属性の変更」メニューが出てきた。やってみたら、めでたくも、ファイルの実行属性が変更できた。
しかし、他にも問題がある。ホストがUNIXの場合、テキストの行末コードはLF(\xa)でなければならないのだが、Windows のテキストファイルの行末コードはCR/LF(\xa\xd)である。
やっぱり、こんなとき、頼りになるのは、コマンドラインのFTPコマンドである。FTPコマンドのサブコマンドで、ASCIIと指定すれば行末のテキストコードを正しいコードに変換してくれる。
しかし、FTPコマンドのサブコマンドでは、ファイル属性を変更するコマンドが存在しない。それじゃあ、どうやっているんだろうと、FFFTPのソースコードを読んだり、資料を漁ってみると、それはFTPサーバー側で定義されていることがわかった。具体的には次のようなサブコマンドでFTPサーバー上のファイル属性を変更できる。
quote site chmod <mode> <filename>

<mode> は8進数であらわされるファイル属性、<filename>は、ファイル名をあらわす。
具体的に cgi.pl をというファイルを所有者が読み書き実行可能で、その他のユーザーに実行のみを許す場合は、次のように入力する。
quote site chmod 755 cgi.pl

ちなみに、quote とは、サーバーに直接コマンドを送信するコマンドで、siteは、そのサーバー上でサポートしているコマンドを実行するコマンド。
ただし、このコマンドが実行できるかどうかは、FTPサーバーしだいで、実際に使えるかどうかは、あらかじめ、次のコマンドを実行してsiteコマンドが実行できるか調べる必要がある。
quote site

某FTPサーバーで、このコマンドを実行すると次のように表示される。
ftp> quote help
214-The following commands are recognized (* =>'s unimplemented).
 USER    PASS    ACCT*   CWD     XCWD    CDUP    XCUP    SMNT*
 QUIT    REIN*   PORT    PASV    EPRT    EPSV    TYPE    STRU
 MODE    RETR    STOR    STOU    APPE    ALLO*   REST    RNFR
 RNTO    ABOR    DELE    MDTM    RMD     XRMD    MKD     XMKD
 PWD     XPWD    SIZE    LIST    NLST    SITE    SYST    STAT
 HELP    NOOP    FEAT    OPTS    ADAT*   AUTH*   CCC*    CONF*
 ENC*    MIC*    PBSZ*   PROT*
214 Direct comments to root@ftpserver.domain.com.
ftp>

*のついているコマンドは使えない。
この場合、site というコマンドは使えることがわかった。それでは、site で実行できるコマンドを調べてみるには、次のように入力する
quote site help

ホストからは次のように出力される。
ftp> quote site help
214-The following SITE commands are recognized (* =>'s unimplemented).
 HELP
 CHGRP
 CHMOD
214 Direct comments to root@ftpserver.domain.com
ftp>

これで、HELP、CHGRP、CHMODが使えることがわかる。
以上のことを踏まえて、ファイルを送信して、サーバー上のファイル属性を自動的に変更するバッチファイルを書いてみた。ファイル名は、cgi-send.bat とする。
(ただし、quote site chmod が使えるかどうかはチェックしていない)

@echo off
setlocal
set hostname=%1
set login=%2
set pass=%3
set dir=%4
set file=%5
if "%hostname%" == "" set /P hostname=ホスト名:
if "%login%"    == "" set /P login=ログイン名:
if "%pass%"     == "" set /P pass=パスワード:
if "%dir%"      == "" set /P dir=ディレクトリ:
if "%file%"     == "" set /P file=ファイル:
call :cgi-send-scr > %temp%\send.scr
ftp -s:%temp%\send.scr
del %temp%\send.scr
endlocal
goto :EOF

:cgi-send-scr
echo open %hostname%
echo %login%
echo %pass%
echo ascii
echo cd %dir%
echo put %file%
echo quote site chmod 755 %file%
echo quit
goto :EOF

カレントディレクトリに hello.pl という CGI用のファイルがあり、ftpserver.domain.com に shirataki というユーザー名で、パスワードが himitsu 、CGI用のディレクトリが cgi-bin のとき、次のように入力する。
cgi-send ftpsrever.domain.com shirataki himitsu cgi-bin hello.pl

引数を指定しないとプロンプトが表示されて問い合わせされる。ファイル属性は常に755になる。

ただし、このバッチファイルにはセキュリティ上の問題がある。まず、パスワードを隠すことができないこと。そして、実行するときに一時ファイルを作成するので、途中でプログラムを停止すると暗号化されていないパスワードがパソコン上に残ることになる。
そんなヤツはいないと思うけど、自宅のパソコンで、住人が信用できるとき以外は使用しないほうが賢明である。

テーマ

関連テーマ 一覧


月別リンク

ブログ気持玉

クリックして気持ちを伝えよう!
ログインしてクリックすれば、自分のブログへのリンクが付きます。
→ログインへ

トラックバック(0件)

タイトル (本文) ブログ名/日時

トラックバック用URL help


自分のブログにトラックバック記事作成(会員用) help

タイトル
本 文

コメント(2件)

内 容 ニックネーム/日時
ネットショップオーナー4とゆうソフトで自宅サーバーでネットショップを運用してみたいと思い、挑戦しているところです。サーバーOSはwin2008serverです。
オーナー4からファイルをアップロードしたいのですが・・・・
SITE CHMOD 755 :command not understood と表示されて、そこからアップロードが中断してしまいます。こちらのサイトで勉強させていただきたいと思って閲覧していましたが今一つも・・それ以上にわかりません。何らかのアドバイスがいただければ幸いです。お気づきになったら、コメントをよろしくお願いします。
勉強中!
2011/04/09 22:41
勉強中!さん、

サーバーがWindows Server 2008の場合、SITE CHMOD 755というコマンドは使えません。

ネットショップオーナー4というソフトで、そのエラーが表示されるなら、
サーバーOSタイプの設定にWindowsというものがあれば、問題を回避できるかもしれません。

ネットショップオーナー4というソフトについては、全く知りません。

このブログは初心者向けに書いていません。
情報はもっと親切な場所から確実な方法で入手することをお勧めします。
にっく(ハードなソフトの話)
2011/04/16 20:49

コメントする help

ニックネーム
本 文
CGIが実行できるようにFTPサーバー上のファイルの属性を自動的に変更する ハードなソフトの話/BIGLOBEウェブリブログ
文字サイズ:       閉じる