FTP mini-HOWTO Matthew Borowski (mkb@yahoo.com) ( http://tarp.worldserve.net/ ) v0.2, 9 January 2000 宮野浩史, (hmiyano@webjapan.com) v0.1, 3 May 2000 FTP クライアントとサーバの使い方 ______________________________________________________________________ 目次 1. 序章 1.1 著者にコンタクトする 1.2 法律義務と配布 1.3 この文章の履歴 2. FTP について 3. FTP を使用する上での初心者へのガイド 3.1 ftp プログラムを起動する 3.2 FTP サーバにログインする 3.3 ファイル転送タイプ 3.4 ディレクトリの操作と一覧 3.5 ファイルのダウンロードとアップロード 3.6 シェルコマンドを起動する 3.7 ハッシュ記号とティック 3.8 その他の ftp コマンド 4. コンソール FTP クライアント 4.1 NcFTP 4.2 lukemftp 4.3 lftp 4.4 cftp 4.5 yafc 5. X Window System FTP クライアント 5.1 gFTP 5.2 WXftp 5.3 LLNL XDIR と XFTP 5.4 guiftp 6. FTP サーバ 6.1 FTP サーバのしくみ 6.2 FTP サーバについての助言 6.2.1 WU-FTPD 6.2.2 ProFTPD ______________________________________________________________________ 1. 序章 この文章は Matthew Borowski によって Linux Documentation Project のた めに書かれました。わたしはこの文章に追加したい内容を全て追加しきっては いません。将来、FTP サーバを動かすための情報を載せた章ができる予定で す。 1.1. 著者にコンタクトする この文章に追加や変更したいことがあれば著者までコンタクトしてください。 お願いですから技術サポートを要求しないでください(UNIX の相談やサポート は著者の会社 WorldServe から購入してもよい ですし、comp.os.linux.* などのニュースグループで助力を得ることもできま す)。それと、著者は英語とペルシア語しか理解できませんのでそれを心に止 めておいてください。 (訳注: 日本語でのコンタクトは翻訳者まで) 1.2. 法律義務と配布 以下の文は参考のため訳文を挙げますが、原文が優先されます。 This document is Copyright 1999 by Matthew Borowski. You may freely distribute this document as long as the copyright notice remains unaltered. If you distribute this HOWTO as part of a commercial product, I would like to recieve a copy, but this is not required. If you wish to distribute a modified or translated version of this document, please contact me first for permission. この文章は Matthew Borowski の著作物です(Copyright 1999)。著作権表示が 変更されずに残っている限り、この文章を自由に配布してもかまいません。こ の文章が商用製品の一部として配布されるときは製品のコピーを受け取りたい ですが、これは必須ではありません。この文章の改変、翻訳版を配布したい場 合は、著者から許可を先に取ってください。 1.3. この文章の履歴 o 991203: FTP HOWTO 初版。まだ作業進行中。 [訳注 : 日本語版改訂履歴を以下に示します。 v1.0, 2000 年 5 月 16 日 翻訳: 宮野浩史 校正: 日下部陽一 , 佐藤亮一 武井伸光 , 早川仁 山下義之 校正をしてくださった皆様、本当にありがとうございました。] 2. FTP について FTP(File Transfer Protocol : ファイル転送プロトコル)はリモートネットワ ークサイトとファイルをやりとりするためのクライアント/サーバプロトコル です。このプロトコルは TCP と共に働きインターネットでもっともよく使わ れます( LAN で使うこともできますが)。 --> FTP サイトとは FTP サーバソフトウェア( FTP デーモン、または ftpd とし ても知られています)を起動しているコンピュータのことです。パブリック FTP サイトは誰でも anonymous か ftp としてログインすることでアクセスで きます。これらの中には、フリーの Unix ソフトウェアが入手できるリポジト リを持つ素晴らしいパブリック FTP サイトがたくさんあります。FTP の使い 方を学べば、必要なリソースへアクセスをできるようになります。 プライベート FTP サイトは(訳注:アクセスするのに)ユーザ名かパスワードを 必要とします。ISP のシェルアカウントも持っている場合は、 FTP を通して あなたのファイルにアクセスすることができるかもしれません (これを確かめ るにはシステム管理者にコンタクトしてください)。 FTP クライアントは FTP サーバへのアクセスを提供するユーザサイドのアプ リケーションです。数多くの FTP クライアントが利用可能で、これにはグラ フィカルとテキストベースのものがあります。 FTP はカリフォルニア大学バークレー分校で最初に 4.2BSD (Berkeley Unix) に含まれる形で開発されました。RFC(仕様書)は から入手可能です。 3. FTP を使用する上での初心者へのガイド FTP を使用するための簡単なガイド。 標準の FTP プログラムはオリジナル ftp クライアントです。ほとんどの Linux ディストリビューションに標準で付属しています。ftp は最初にカリ フォルニア大学バークレー分校によって開発された 4.2BSD で現れました。 3.1. ftp プログラムを起動する ftp を使うのは簡単です。たとえば、最新の Linux カーネルソースをダウン ロードするために metalab.unc.edu という名前の匿名 FTP サイトに接続した いとします。 コマンドラインから以下のようにタイプします: $ ftp metalab.unc.edu これで ftp プログラムは metalab.unc.edu に接続しようとします。他のやり 方で同じことをするには ftp をパラメータなしで起動し、サイト名を引数と して open コマンドを使用します。 $ ftp ftp> open metalab.unc.edu 3.2. FTP サーバにログインする FTP サイトに接続するとログインを要求されます(Enter を押すとローカルの ユーザ名でログインします。この場合は foo)。ここでは anonymous ないし ftp としてログインし、パブリックアーカイブへ行くことにします。 220 helios.oit.unc.edu FTP server (Version wu-2.6.0(2) Wed Nov 17 14:44:12 EST 1999) ready. Name (metalab.unc.edu:foo): 次に、完全な E-Mail アドレスをパスワードとして記入します(ほとんどのパ ブリック FTP サイトはこれを要求します)。 331 Guest login ok, send your complete e-mail address as password. Password: ログインに成功すると、以下の情報が与えられます。 Remote system type is UNIX. Using binary mode to transfer files. ftp> 3.3. ファイル転送タイプ FTP サイトにログインしたあとに、ftp はファイル転送タイプを表示します。 上記の場合はバイナリ(binary)です。バイナリモードではファイルを1ビット ずつ、 FTP サーバにあるとおりに転送します。しかしながらアスキ ー(Ascii)モードではテキストを直接ダウンロードします。 ascii や binary とタイプすることでタイプを変更できます。 今回はカーネルソースをダウンロードしたいので、ファイル転送タイプはバイ ナリのままにしておきます。バイナリタイプはテキストではない全てのファイ ルをダウンロードするさいに使用します(たとえば、画像イメージ、zip/gzip アーカイブ、実行ファイルなど)。分からなかったらバイナリモードを使用し ましょう。 3.4. ディレクトリの操作と一覧 ファイルを一覧するには ls を使います。FTP サーバの ls はリモートサーバ 上で実行されますので、使えるコマンドラインオプションはサーバによって異 なります。一般的なオプションは普通は利用可能ですので、詳しいことは ls の man ページを調べてください。 ftp> ls 200 PORT command successful. 150 Opening ASCII mode data connection for /bin/ls. total 33590 -r--r--r-- 1 root other 34348506 Dec 03 03:53 IAFA-LISTINGS lrwxrwxrwx 1 root other 7 Jul 15 1997 README -> WELCOME -rw-r--r-- 1 root other 890 Nov 15 13:11 WELCOME dr-xr-xr-x 2 root other 512 Jul 15 1997 bin dr-xr-xr-x 2 root other 512 Jul 15 1997 dev dr-xr-xr-x 2 root other 512 Jul 18 1997 etc drwxrwxrwx 11 ftp 20 4608 Nov 28 16:00 incoming lrwxrwxrwx 1 root other 13 Jun 04 1998 ls-lR -> IAFA-LISTINGS dr-xr-xr-x 17 root root 512 Jun 08 11:43 pub dr-xr-xr-x 3 root other 512 Jul 15 1997 unc dr-xr-xr-x 5 root other 512 Jul 15 1997 usr 226 Transfer complete. もし ls コマンドで列挙したファイルが多すぎて画面から上にはみ出てしまっ た場合は、 Shift-PageUp を使うことで上にスクロールできます。これは Linux のコンソール上での他、xterm や rxvt 上でも使えます。 パブリック FTP アーカイブ上では、ダウンロードできるリソースは普通 /pub ディレクトリに格納されています。この例では、カーネルソースが /pub/Linux/kernel にあることが分かっていることとして、次のようにタイプ してそのディレクトリまで移動します。 ftp> cd pub/Linux/kernel 250-README for kernel 250- 250-What you'll find here: kernel sources and patches 250- 250- 250 CWD command successful. 「250」で始まるメッセージはサーバから送られてきた情報メッセージです。 上記の場合、あなたがディレクトリに cd すると FTP サーバが自動的に README ファイルを送るように設定されています。 3.5. ファイルのダウンロードとアップロード さて、再度 ls すると、v2.2 ディレクトリがあるのでそこに cd します。そ の後、また ls をすると、ダウンロードしたいファイル linux-2.2.13.tar.gz が見つかります。そこで今度は次のようにタイプします。 ftp> get linux-2.2.13.tar.gz local: linux-2.2.13.tar.gz remote: linux-2.2.13.tar.gz 200 PORT command successful. 150 Opening BINARY mode data connection for linux-2.2.13.tar.gz (15079540 bytes). ftp プログラムがリモートファイル linux-2.2.13.tar.gz をローカルファイ ル linux-2.2.13.tar.gz として保存し始めました。 もしこれを foo.tar.gz という名前でローカルファイルに保存したければ、次 のように指定できます。 ftp> get linux-2.2.13.tar.gz foo.tar.gz local: foo.tar.gz remote: linux-2.2.13.tar.gz 200 PORT command successful. 150 Opening BINARY mode data connection for linux-2.2.13.tar.gz (15079540 bytes). 一度に複数のファイルをダウンロードしたい場合は、mget (multiple get) コ マンドを使う必要があります。mget はスペースで区切られたダウンロードし たいファイル名のリストをコマンドの引数として使うか、mget コマンドをワ イルドカードと合わせて使用することもできます。たとえば、 ftp> mget linux* 上記のコマンドによって、「linux」で始まる全てのファイルを取得します。 普通 mget は各ファイルをダウンロードするまえに本当にダウンロードするか プロンプトを出します。prompt コマンドを使うことでこれを切替えられま す。 たとえばあなたが何かのソフトウェアを書いたとして、これを Linux ソフト ウェアアーカイブに含めてもらうために MetaLab にアップロードしたいとし ます。それでは最初に、/incoming ディレクトリ(ほとんどのパブリック FTP サーバにはファイルがアップロードできる incoming や uploads といった名 前のディレクトリがあります)に移動し、put コマンドを使用します。 ftp> cd /incoming ftp> put foo.tar.gz local: foo.tar.gz remote: foo.tar.gz 200 PORT command successful. 150 Opening BINARY mode data connection for foo.tar.gz. 226 Transfer complete. 10257 bytes sent in 0.00316 secs (3.2e+03 Kbytes/sec) put コマンドは get と同じように、mput で複数のファイルを同時にアップロ ードできます。リモートファイル名やパスを引数として指定すれば、ローカル ファイルを別のファイル名でサーバ上にアップロードできます。 もしファイル foo.tar.gz が、アップロードしようとしたときにローカルのカ レントディレクトリにない場合はどうすればよいのでしょう? これは、lcd (local change directory)コマンドを使用することによってローカルのディレ クトリを変更できます。 ftp> lcd /home/foo/ Local directory now /home/foo 3.6. シェルコマンドを起動する FTP クライアントは感嘆符(!)を使うことによってローカルコマンドを起動す ることをサポートしています。たとえば、ローカルのカレントディレクトリの ファイルを列挙するには次のようにします。 ftp> !ls これがどうやって働くのかというと、ftp はシェル($SHELL 環境変数で指定さ れた)を呼び出し、シェルが ls を起動します。つまりは、シェルで動くコマ ンドラインなら、前に「!」をつけてやりさえすれば何でも実行できます(ほと んどの Linux ディストリビューションでは bash (Bourne Again SHell)がデ フォルトのシェルになっています)。しかし、!cd はあなたの思ったとおりに は動いてくれないことに注意してください。だからこそ lcd コマンドが存在 するのです。 3.7. ハッシュ記号とティック もし ftp でダウンロードをしているファイルの進行状況が見られたら便利だ と思いませんか? hash コマンドを使用することによって、ダウンロード時に ハッシュ記号を出力します。 ftp> hash Hash mark printing on (1024 bytes/hash mark). 見ても分かるように、ftp は 1024 バイト分データをダウンロードするたびに ハッシュ記号を出力します。 その他にも tick オプションがあります。 ftp> tick Tick counter printing on (10240 bytes/tick increment). これはダウンロードの進行状況を下のように出力します。 Bytes transferred: 11680 3.8. その他の ftp コマンド ftp コマンドは他にもたくさんあります。もしあなたがパーミッションを与え られていれば(個人のプライベートシェルアカウントに接続している場合はそ のはず) mkdir コマンドによってリモートサーバ上にディレクトリを作成でき ます。delete コマンドでファイルをリモートサーバ上から削除でき、rmdir ではディレクトリを削除します。chmod コマンドを使うことによって、ファイ ルのパーミッションを変更することもできます。 ftp を使う上でのさらに詳しい情報は、ftp プログラム内のオンラインヘルプ を参照してください(コマンドを列挙するには引数なしで help とタイプ、特 定のコマンドのヘルプを見る場合は help )。コマンドプロンプ トから man ftp とタイプすることで、ftp の Unix man ページを読むことも できます。 4. コンソール FTP クライアント 本来の FTP プログラムはオリジナル ftp クライアントで、これを勉強してお くとためになるでしょう。これはほとんどのシステム(すたれた脳死版です が、Win32 にでさえも ftp コマンドが含まれています)で利用可能なことが確 かなただひとつの FTP クライアントです。 世の中には他にも数多くのコンソールモード(テキストのみ)の FTP クライア ントが利用可能です。このリストは内容豊富なものではありませんが、もっと も有名なものを含みます。もっと探すには FreshMeat で検索してみてください。 4.1. NcFTP NcFTP は時代を超えて数多くの Unix ユーザから好まれている FTP クライア ントです。これはほとんどの Linux ディストリビューションにバンドルされ ていて、タブ補完やブックマークなど数多くの発達した機能を提供しま す。NcFTP Version 2 では curses ベースのフルスクリーンモードがありまし たが、この機能は Version 3 でなくなりました。 これは標準の ftp が使うコマンドと 100% 互換性があるわけではありませ ん。たとえば、NcFTP の get と put は標準 ftp の mget や mput のように 動作します。なので、リモートファイルを別名のローカルファイルとして保存 したい場合は get -z remotename localname とする必要があります。有難い ことに、NcFTP にはコマンドの勉強を手伝ってくれる便利なオンラインヘルプ システムがあります。 最新版の NcFTP は から入手できます。 Debian パッケージは から入 手可能です。 Redhat パッケージは から入手可能 です。 4.2. lukemftp lukemftp は NetBSD から他のシステムへのポートで、その名前を拡張機能の ほとんどを書いた方から由来し、以下の機能を含みます。コマンドラインエ ディティング、FTP と HTTP の URL のコマンドラインフェチ(プロキシ経由を 含む)、コンテキストセンシティブ単語補完、ダイナミックプログレスバ ー、IPv6 サポート、変更時間保存、ローカルとリモートファイルのページン グ、パッシブモードサポート(アクティブモードの代替として)、 SOCKS サポ ート、 TIS FWTK gate-ftp サーバサポート、それと転送レートの減速。 標準の ftp クライアントから思いっ切り異なったものは欲しくないが、もっ と発達した機能が欲しい方に lukemftp を強くお勧めします。 最新版の lukemftp は から入手できます。 Redhat パッケージは から入手可能です。 4.3. lftp lftp は洗練されたコマンドラインベースの FTP クライアントです。bash の ようにジョブコントロールを持ちます。これは GNU readline ライブラリを入 力に使用するので、コマンドライン補完と編集機能を持ちます。lftp はさら にブックマーク、ミラーリングサポート、そして複数のファイルを並列に転送 できます。 最新版の lftp は から入手で きます。 Debian パッケージは から入手 可能です。 Redhat パッケージは から入手可能です。 4.4. cftp Comfortable FTP (cftp)はフルスクリーンモードのクライアントです。機能は 少ないですが、それを使いやすさでカバーしています。矢印キーと Enter キ ーを使うことでディレクトリ間をブラウズできます。 最新版の cftp は から入手できる はずです。 Redhat パッケージは から入手 可能です。 4.5. yafc Yafc は、ディレクトリキャッシュ、リモートファイル名補完、エイリアス、 色付き ls、回帰できる get/put/ls/rm、nohup モード転送、タグ(キュー)、 複数接続、プロキシサポートと、その他たくさんの機能を含んだとても便利な FTP クライアントです。 Yafc は Kerberos4 認証をサポートします。 最新版の yafc は から入手でき ます。 Debian パッケージは から入手可能です。 Redhat パッケージは から 入手可能です。 5. X Window System FTP クライアント X Window System で起動するように設計されたグラフィカルな FTP クライア ントもあります。これらのクライアントはグラフィカル環境に慣れたユーザに 使いやすさを提供し、さらに時々テキストベースの FTP クライアントでは提 供するのが難しい融通の利くオプションを提供します。 5.1. gFTP gFTP は Gtk を使って書かれた X Windows System 用の FTP クライアントで す。これのインターフェイスは、不安定な某 OS 上でよく利用される人気ソフ ト、WS_FTP に似たところがいくつかあります。 gFTP は同時ダウンロード、中断されたファイル転送の再開、ファイル転送 キュー、ディレクトリ全体のダウンロード、FTP プロキシサポート、リモート ディレクトリキャッシング、パッシブとノンパッシブファイル転送、ドラッグ アンドドロップサポート、便利な接続マネージャとその他たくさんの機能を持 ちます。 もしあなたが Red Hat Linux を使っていて、 GNOME デスクトップがインスト ールされているなら、恐らく gFTP を既に持っているでしょう。もしそうでな かったら gFTP のホームページ からダウンロード できます。 5.2. WXftp WXftp は 主に Linux ワークステーション上で使うために設計された X Window System 用の FTP クライアントです。これは WXWindows ツールキット を使用して書かれていますので、 Motif か GTK+ のどちらかを使用できるよ うにコンパイルすることができます。 これは直感的なインターフェイス(WS_FTP のような)、セッションマネー ジャ、オンラインヘルプ、プログレスバー、その他たくさんの機能を持ちま す。 WXftp のホームページ を見てみましょう。 5.3. LLNL XDIR と XFTP LLNL XFTP は初期 Linux 用グラフィカル FTP クライアントのひとつです。こ れは FXP (ふたつのリモートホスト間でのファイル転送)をサポートし、Motif ベースのインターフェイスを持ちます。 さらなる情報は で入手可能です。 5.4. guiftp guiftp は GTK+ ツールキットで記述された簡単な FTP クライアントです。こ れはたくさんの機能は必要なくて、シンプルできれいな見た目が欲しいという ときによいでしょう。 guiftp のホームページは で す。 6. FTP サーバ 6.1. FTP サーバのしくみ 伝統的な FTP サーバは inetd (internet superserver daemon)から実行され ます。標準の FTP ポートは 21 です。ユーザがログインしようとすると、FTP サーバは標準システムコールを使ってユーザ名とパスワードが正しいかチェッ クします。普通はシステムパスワードファイルのエントリ、NIS を使っている 場合は NIS テーブルのエントリと照合します。もしログインが正しい場合 は、ユーザにシステムへのアクセス権が与えられます。 匿名 FTP のしくみはまた別です。ユーザは anonymous (匿名)か、 FTP ユー ザ名(これは設定ファイルで定義できます)でログインします。そしてユーザは chroot() されているディレクトリツリーにアクセスを与えられます。これは ユーザが権限を与えられていないディレクトリツリーにアクセスできないよう にすることを確実にします。 chroot されたディレクトリツリーは普 通、bin/、etc/、と lib/ ディレクトリを含んだ模倣のファイルシステムを持 ちます。ダウンロードされるファイルは普通 pub/ ディレクトリに置かれま す。 匿名 FTP ツリー内の模倣のファイルシステムの理由は、FTP デーモンが ls の要求のために外部コマンドを実行するためです。これ以外のプログラムを bin ディレクトリに追加することもできますし、ユーザは FTP クライアント 内の SITE コマンドでこれらを実行できます。たとえば、Red Hat の FTP は RPM コマンドを含みます(ユーザがサイト上の RPM パッケージへ問い合わせで きるように)。 さらに異なったしくみの FTP サーバもあります。たとえば、ユーザアカウン トをシステム全体のパスワードファイルから独立してセットされるのを許すも のもあります(FTP オンリーのアカウント)。ビルトインの ls コマンドを最初 から持っていて、特別なディレクトリツリーを chroot 構造内に必要としない ものもあります(たとえば ProFTPD や NcFTPd)。その他、標準 ftp の概念と は全く異なったものもあります。たとえば FTP4ALL はシステムパスワードを 全く使いません。これには独自のユーザとグループファイルを使用し、アップ ロードとダウンロードの比率やカスタマイズできるサーバメッセージなどの機 能があります。 6.2. FTP サーバについての助言 6.2.1. WU-FTPD WU-FTPD は Red Hat と Caldera や、その他たくさんの Linux ディストリ ビューションに含まれている FTP デーモンです。 で WU-FTPD についてもっと詳しいことを学べます。 WU-FTPD FAQ は で見 つかります。 6.2.2. ProFTPD ProFTPD はアパッチ形式の設定、仮想ホストの広範囲サポート、インターナル ls を含むパワフルな FTP サーバです。 完全なコマンドリファレンスとダウンロードは で見つかります。