FTPサーバーの再コンパイル/改造

  1. vsftpd(2.3.4)の場合

  2. proftpdの再コンパイルの方法

vsftpdの再コンパイルの方法

vsftpd-2.3.4.tar.gzの場合
ソースを展開します。

vi builddefs.hを必要に応じて編集します。
SSL可能にするかどうか、TCPWRAPPERSを定義するとhosts.allow,hosts.deny
での制御が可能になります。

vsftpd.confの設定は
はコンパイル時のbuilddefs.hに依存します。

  1. postlogin.c
  2. ftpcodes.h
  3. ls.c
  4. logging.c
  5. logging.h
  6. sysutil.c
  7. sysutil.h

上記7つのファイルについて上書きし、再コンパイルします。(make)
ルートになってオブジェクトのみコピーします。
cp vsftpd /usr/sbin/.  (Fedoraの場合)

 

proftpdの再コンパイルの方法

http://www.proftpd.org/よりダウンロードします。

バージョンは1.2.9をダウンロードしたものに手をいれました。
proftpdはアパッチのようなモジュール追加形式でFTPプロトコルのRFC定義部分などは

モジュールで分離されています。したがって2つのモジュールに手を入れることでFSynchの
同期モードに対応できました。

proftpd-1.2.9.tar.gzを適当なディレクトリーに落としてから解凍します。
>tar zxvf proftpd-1.2.9.tar.gz
>cd proftpd*
ここで[proftpd-1.2.9]のディレクトリーに移動しました。

下にmodulesのディレクトリがあります。
>cd modules

ここで元のソースを保存したい場合は適当な別ディレクトリにコピーしてください。(再度tarで解凍もできますが、)
ここにproftpd-mod-fsynch.tar.gzをコピーして解凍します。

>tar zxvf proftpd-mod-fsynch.tar.gz
これにより、mod_ls.c mod_site.cの2つのファイルが上書きされます。

再び[proftpd-1.2.9]の直下に移動します。
>./configure
でコンパイル環境を構築します。
ここではLinuxのディストリビューションによってディレクトリを決めるパラメータを指定できます。
何も指定しない場合は /usr/local/sbin にバイナリファイルが
/usr/local/etc/proftpd.conf ができます。

>make
>su
今まで使用していたFTPサーバーのバイナリーをバックアップする場合は待避させてください。
>make install

デフォルトでwu-ftpdがインストールされている場合はproftpdへの移行作業が必要です。
xinetdで起動させる設定の場合を簡単に説明します。
またproftpdの設定方法は検索などで調べてみてください。

proftpd.conf をエディタで開いて該当箇所を書き換えます。
------------------------------
ServerType         inetd
User                  既にあるユーザー名
Group                既にあるグループ名

TimesGMT          off  
------------------------------
TimesGMT はLinux(UNIX)システムの設定に合わせる必要があります。
たとえば、/etc/sysconfig/clockでUTC=noの場合は上記のようにTimesGMTをoffにし
UTC=YESの場合はonにしてください。

xinetd環境をwu-ftpdからproftpdへ変更する。
>cd /etc/xinetd.d
>vi wu-ftpd
disable = yes
にする。ntsysvでも同じことができます。

proftpd用のファイルがない場合は新規作成します。

>vi proftpd
service ftp
{
disable = no
socket_type = stream
wait = no
user = root
server = /usr/local/sbin/in.proftpd <インストールした環境に応じて
}

xinetdを再起動させます。

備考

2011.4.29の時点で最新ソースに対して再度対応しました

 

FSynch概要ページへ

使用説明ページへ