anonymous FTPの設定を行います。
anonymous FTPとは、利用者登録を行っていない利用者でも自由に接続できる「anonymous」(匿名)と呼ばれる特殊なユーザーにより、FTPサーバーへのファイル送受信をできるようにする利用形態のことです。
匿名ユーザーでFTPサーバーにログインするときは、ユーザ名に「anonymous」、パスワードは任意(空欄可)の文字列を指定します。(ただし、マナーとしてメールアドレスを入力するということは覚えておきましょう。)
今回は、匿名ユーザーからFTPサーバーへのファイル書き込み(アップロード)を行えるように設定します。
vsftpd.confの編集
vsftpdの設定変更はvsftpd.confを編集することで行います。
# vi /etc/vsftpd/vsftpd.conf anonymous_enable=YES local_enable=YES write_enable=YES local_umask=022 anon_upload_enable=YES dirmessage_enable=YES xferlog_enable=YES connect_from_port_20=YES xferlog_std_format=YES listen=YES pam_service_name=vsftpd userlist_enable=YES tcp_wrappers=YES
vsftpdの設定項目は上記以外にもたくさんありますが、ここでは以下2つの設定項目について着目します。
設定項目 | 説明 |
---|---|
anonymous_enable | 匿名ユーザーによるFTPログインの許可/不許可を指定。 |
anon_upload_enable | 匿名ユーザーからのサーバーへのファイル書き込み(アップロード)許可/不許可を指定。 |
上記2つの設定項目を「YES」に設定することで匿名ユーザーからFTPサーバーへのファイル書き込み(アップロード)が可能になります。
続いて、ファイルのアップロード先ディレクトリを作成します。匿名ユーザーのホームディレクトリはデフォルトでは「/var/ftp」になっています。ここでは「/var/ftp/pub」配下に「upload」ディレクトリを作成します。
# cd /var/ftp/pub # mkdir -m 777 upload
以上で、anonymous FTPの設定は完了です。この状態でvsftpdを起動します。
vsftpdの起動
vsftpdを起動するには以下のコマンドを実行します。
# service vsftpd start Starting vsftpd for vsftpd: [ OK ]
iptablesの停止
FTPは2つのコネクションを使い分けるプロトコルであり、データ転送に使用するデータコネクションにおいてはポート番号が固定ではありません。そのため、iptablesの設定は少し面倒です。
ここでは一旦、iptablesを無効にすることにします。
# service iptables stop iptables: Flushing firewall rules: [ OK ] iptables: Setting chains to policy ACCEPT: filter [ OK ] iptables: Unloading modules: [ OK ]
iptablesでFTPアクセスを許可する方法については次回に詳しく見ていきます。
FTPクライアントからのファイル送信
FTPクライアントソフトウェアもいろいろありますが、ここではWindows標準のFTP機能を使用して、ファイル送信の確認をします。
Windows標準のFTP機能はコマンドプロンプトから使用します。
(コマンドプロンプトの起動は画面左下のWindowsマークをクリックし「プログラムとファイル検索」欄に「cmd」と入力し、Enterキーを押下します。)
まずは何でも良いので送信するファイルを作成しましょう。
> type nul > testfile
上記は「空(0バイト)でファイルを作成する」という処理を行うコマンドです。Linuxのtouchコマンドに相当します。
あとはftpコマンドを実行します。以下は、FTPサーバーのIPアドレスが「172.16.0.10」の場合のコマンド例です。
> ftp 172.16.0.10 172.16.0.10 に接続しました。 220 (vsFTPd 2.2.2) ユーザー (172.16.0.10:(none)): anonymous 331 Please specify the password. パスワード: 230 Login successful. ftp>
ftpコマンドを実行すると、FTPサーバーに接続します。接続に成功するとユーザー名とパスワードの入力が求められます。今回は匿名ユーザーでログインするためユーザー名に「anonymous」と入力します。パスワードは何でも構いません。ここでは空欄のままEnterキーを押下します。
ログインに成功すると、FTPのコマンドラインインタプリタが起動し、ユーザーからFTPコマンドを受け付けられる状態となります。
試しにいくつかFTPコマンドを実行してみます。
ftp> pwd 257 "/" ftp> ftp> cd /pub/upload 250 Directory successfully changed. ftp> ftp> pwd 257 "/pub/upload" ftp>
FTPサーバー(リモートホスト)の現在のディレクトリ(カレントディレクトリ)のパスを確認するにはpwdコマンドを実行します。また、FTPサーバーのディレクトリを変更するにはcdコマンドを実行します。
OSコマンドと似ている部分もあるため、覚えやすいはずです。
FTPクライアント(ローカルホスト)からFTPサーバーへファイルを送信するにはputコマンドを実行します。
ftp> put "C:\Users\user\testfile" ./testfile 200 PORT command successful. Consider using PASV. 150 Ok to send data. 226 Transfer complete. ftp>bye
putコマンドの結果に「226 Transfer complete.」と出力されれば送信成功です。
なお、ひとつのファイルを送信する場合はputを使用しますが、一度に複数のファイルを送信したい場合はmputコマンドを使用します。