FTPサーバ:vsFTPd
ファイル転送といえば昔からFTPが使われていました。遠隔地にいる知合いにファイルを転送するときはメールに添付したりしますが、 容量の大きいファイルだとメールサーバの許容範囲を超えてしまい転送できない場合があります。 そんなときにFTPサーバを持っていると便利ですがパスワードが平文だったりとセキュリティに問題があったりしますので無闇に構築はできません(私は構築しましたが)。
FTPdの種類は数多くありますが私は設定の簡単なvsftpdにしました(理由はproftpdの設定に挫折したから)。
| ここでやること |
|---|
|
■ FTPサーバであるvsFTPdをインストールする |
FTPの構築で一つ、どうしてもうまくいかずに試行錯誤を繰り返していましたが、 その理由がFTPユーザを追加するときにそのユーザのシェルの権限を与えていなかったからだと気づきました(分かってしまえば単純でしたが解明するのに苦労しました)。
コマンド:インストール
# apt-get install vsftpd
公開ディレクトリ:/mnt/ftp/pub/
ユーザ名:ftpman
パスワード:xxxxxxx ←適当につけて下さい
ファイル編集:/etc/shells
/etc/shellsに下記の文字を追加します。これでユーザ登録の際に、シェルを/bin/falseと指定されたユーザは FTPログインが出来てFTPコマンドは通りますが、一般シェルの操作はできずに余計な操作をされるのを防ぎます
/bin/false
コマンド:FTPユーザ追加
FTPで公開したいディレクトリを作成
今回の例では/mnt/ftp/pub/が公開ディレクトリになる
# mkdir /mnt/ftp/
# mkdir /mnt/ftp/pub/
# mkdir /mnt/ftp/pub/
FTPユーザ用のグループを作成(例ではftpgroup)
# groupadd ftpgroup
ユーザ追加コマンドの-dのあとにホームディレクトリを指定(このディレクトリが公開されます)、この例ではftpmanという名前のユーザを作成しています。作成するユーザはFTPのためだけに作成するものと考えてください。
# useradd -d /mnt/ftp/pub -g ftpgroup -s /bin/false ftpman
パスワードを設定 ここで設定したパスワードがFTPへのログインパスワードになります
# passwd ftpman ←エンターを押して続けてパスワードを入力する
次にvsFTPdの設定をします。
ファイル編集:/etc/vsftpd.conf
anonymous_enable=NO アノニマスでのアクセスを許可しない
local_enable=YES サーバで登録したユーザ名でアクセスする
write_enable=YES FTPサーバに書き込みを許可する
ls_recurse_enable=YES コメントアウトをはずしてサブディレクトリの処理も行えるようにする
pasv_enable=yes PASVモードを有効
pasv_min_port=50000(例) PASVモードで使用するポートを指定(範囲始め)
pasv_max_port=50029(例) PASVモードで使用するポートを指定(範囲終わり)
chrootの設定。この設定をしないとFTPでログインしたディレクトリより上位のディレクトリへ移動できてしまいます
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list
バナーを非表示にして余計な情報を公開しないようにします
ftpd_banner=Welcome to FTP service.
local_umask=022 書き込みパーミッションをrw-r--r--にする
local_enable=YES サーバで登録したユーザ名でアクセスする
write_enable=YES FTPサーバに書き込みを許可する
ls_recurse_enable=YES コメントアウトをはずしてサブディレクトリの処理も行えるようにする
pasv_enable=yes PASVモードを有効
pasv_min_port=50000(例) PASVモードで使用するポートを指定(範囲始め)
pasv_max_port=50029(例) PASVモードで使用するポートを指定(範囲終わり)
chrootの設定。この設定をしないとFTPでログインしたディレクトリより上位のディレクトリへ移動できてしまいます
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list
バナーを非表示にして余計な情報を公開しないようにします
ftpd_banner=Welcome to FTP service.
local_umask=022 書き込みパーミッションをrw-r--r--にする
転送量が多すぎたりするとプロバイダに帯域制限をされる可能性がありますので転送速度を程ほどに抑えておいたほうがいい場合もあります
その場合、例えば下記の一文を追加すると転送速度が300KB/秒に制限されます。anonymous接続の場合は「anon_max_rate」
local_max_rate=300000(例)
コマンド:公開ディレクトリのパーミッション変更
/mnt/ftp/pub/のグループをftpgroupにする
# chgrp ftpgroup /mnt/ftp/pub/
/mnt/ftp/pub/のオーナーをftpmanにする
# chown ftpman /mnt/ftp/pub/
vsFTPdを再起動して設定を反映させる
# /etc/init.d/vsftpd restart
コマンド:/etc/vsftpd.chroot_list作成
何も記載せずに保存して空ファイルを作成する
# vi /etc/vsftpd.chroot_list すぐに:wqコマンドで保存終了させる
外部からftp://xxx.xxxx.xxx(サーバのアドレス)にブラウザからアクセスすれば公開フォルダの中身が閲覧できます。 または 「FFFTP」のようなFTPクライアントソフトを使用しても同様です。ユーザ名とパスワードは上記作成したものを使用します。