vsftpd によるFTPサーバ構築
目次
vsftpって?
FTPサービスを提供するソフトウェア。「vs」は Very Secure を意味しているらしい。セットアップ手順
1. ダウンロード
wget ftp://vsftpd.beasts.org/users/cevans/vsftpd-2.0.6....
2. builddefs.h 編集
inetd や SSLを使う場合用に builddefs.h を編集して以下のようにします
#define VSF_BUILD_TCPWRAPPERS
3. ftpユーザ作成
すでにいるので、軽く修正
sudo vipw
login shell | /sbin/nologin |
home directory | /var/tmp |
権限とかも修正
sudo chown root:root /var/tmp ; sudo chmod og-w /var/tmp
4. make
make
makeするとエラーがでてきた。。
tcpwrap.c:15:20: error: tcpd.h: No such file or directory
パッケージを入れる
sudo aptitude install libwrap0-dev
またエラーがでてきた。。
sysutil.c: In function 'vsf_sysutil_wait_exited_normally':
どうもgccとかのバグらしい
直接ファイルを直す
/usr/include/sys/wait.h
46-47行目の変更
(変更前)
46 (extension ({ union { typeof(status) in; int i; } u; \
47 u.in = (status); u.i; }))
(変更後)
46 (extension (((union { typeof(status) in; int __i; }) \
47 { .in = (status) }).i))
~/src/vsftpd-2.0.6/sysutil.c
604 // return WIFEXITED(p_waitret->exit_status);
605 return WIFEXITED(((struct vsf_sysutil_wait_retval *)p_waitret)->exit_status);
615 // return WEXITSTATUS(p_waitret->exit_status);
616 return WEXITSTATUS(((struct vsf_sysutil_wait_retval *)p_waitret)->exit_status);
~/src/vsftpd-2.0.6/sysdeputil.c
158 //#include <linux/unistd.h> 159 #include <unistd.h>
162行目をコメントアウトし、164行目に追加
163 //_syscall2(int, capset, cap_user_header_t, header, const cap_user_data_t, data)
164 #define capset(head,data) syscall(__NR_capset,head,data)
165 /* Gross HACK to avoid warnings - linux headers overlap glibc headers */
で成功するはず
5. make install
installする前にディレクトリを作成する
sudo mkdir /usr/local/man/man5/ ; sudo mkdir /usr/local/man/man8/
# make install
6. 接続
ftp localhost
メモ
PORTモード接続
通常FTPの接続ではコマンドのやり取りを制御する接続とデータの転送を行う接続の2種類の接続が行われる。
制御の接続は21番ポート、データの接続は20番ポートで行われるのが一般的。
また制御の接続はクライアントからサーバへと接続要求がされるが、データの転送を行うときはサーバからクライアントへと接続要求がされる
接続用途 | ポート | 接続要求 |
コマンドの制御 | 21 | クライアントからサーバ |
データの転送 | 20 | サーバからクライアント |
PORT接続の場合、FTPクライアントがファイアーオール内にいてプライベートアドレスを利用している場合に、
NATの設定が正しくされていないとデータ接続時にFTPサーバがファイアーオール内のどのクライアントに接続してよいかが分からなくなる場合があります
PASVモード接続
PASV(パッシブ)モード接続では、PORT接続とは異なり、データ転送のためのセッションの開始がFTPクライアントから
行われるので、ファイアーオールの影響を受けずにFTPサービスの開始を行えます。
/etv/vsftpd.confに以下を追記します。
pasv_enable=YES
2008年07月13日(日) 21:51:48 Modified by monpoke