pure-ftpd on FreeBSD

[ Nob's Home | FreeBSD ]

ftp serverである pure-ftpd を daemontoolで起動します。

情報

install

/usr/local/mysql以下にinstallしてあるMySQLを用いて認証してみます。
$ wget http://unc.dl.sourceforge.net/sourceforge/pureftpd/pure-ftpd-1.0.11.tar.gz
$ tar zxvf pure-ftpd-1.0.11.tar.gz 
$ cd pure-ftpd-1.0.11
$ ./configure --with-mysql=/usr/local/mysql
$ make
$ su
# make install

制御DBの作成

tcpserverでpure-ftpdの接続を制御します。
原則はftpを認めず、特定のhostにのみftp接続を認めるよう、/etc/tcp.ftpを書きます。
192.168.0.:allow
:deny
このfileから/etc/tcp.ftp.cdbを作成します。
# tcprules /etc/tcp.ftp.cdb /etc/tcp.ftp.tmp < /etc/tcp.ftp

inetdをkill

/etc/inetd.confのftpの行をコメントアウトします。
他にinetdを使用していなければ、(そうすべきなんですが)、
/etc/rc.confで、
inetd_enable="NO" 
として起動時にinetdを立ち上げないように設定します。
現在立ち上がっている inetd をkillします。

daemontoolでftpdを起動

あらかじめ、logを取るユーザーとして daemonlog というユーザーとグループを登録しておきます。
# mkdir /etc/service/ftpd
# chown root.wheel /etc/service/ftpd
# chmod 1755  /etc/service/ftpd
# cd  /etc/service/ftpd
# vi run
#!/bin/sh
exec \
/usr/local/bin/tcpserver -vpR -x /etc/tcp.ftp.cdb \
                         0 \
                         ftp \
                         /usr/local/sbin/pure-ftpd 2>&1

# chmod 755 run
# mkdir log
# vi log/run
#!/bin/sh
#
exec \
     /usr/local/bin/setuidgid daemonlog \
     /usr/local/bin/multilog t ./main
# chown 755 log/run
# mkdir log/main
# chown daemonlog.daemonlog log/main
ここで
# ln -s /etc/service/ftpd /service
とlinkを張るとpure-ftpdが起動されます。
# svstat /service/ftpd
で起動を確認してください。
/service/ftpd/log: up (pid 97744) 9 seconds
などと表示されれば成功です。
up timeが増加していかない場合は、起動に失敗していますので、設定を見直してください。

MySQLでの認証

# vi /etc/pureftpd-mysql.conf

#MYSQLServer     localhost
#MYSQLPort       3306
MYSQLSocket     /tmp/mysql.sock
MYSQLUser       root
MYSQLPassword   rootpw
MYSQLDatabase   pureftpd
MYSQLCrypt      cleartext
MYSQLGetPW      SELECT Password FROM users WHERE User="\L"
MYSQLGetUID     SELECT Uid FROM users WHERE User="\L"
MYSQLGetGID     SELECT Gid FROM users WHERE User="\L"
MYSQLGetDir     SELECT Dir FROM users WHERE User="\L"






[ Nob's Home | FreeBSD ]
nob@makioka.y-min.or.jp