Установка стабильной версии из портов:
shell код:
cd /usr/ports/ftp/proftpd/
make install WITH_MYSQL=yes
make clean
Установка последней версии из исходников:
shell код:
fetch ftp://ftp.proftpd.org/distrib/source/proftpd-1.3.3rc3.tar.gz
tar -xvf proftpd-1.3.3rc3.tar.gz
cd proftpd-1.3.3rc3
Также последняя версия исходников доступна в CVS (пароль для анонимусов пустой):
shell код:
cd ~/cvs
cvs -d :pserver:anonymous@proftp.cvs.sourceforge.net:2401/cvsroot/proftp login
cvs -d :pserver:anonymous@proftp.cvs.sourceforge.net:2401/cvsroot/proftp -z3 co proftpd
cd proftpd
В версии 1.3.2 глюк с русскими символами уже исправлен, так что исходники править не требуется. Если же вы хотите поставить более раннюю версию, то вам придется несколько подкорректировать файл
src/netio.c:
C++ код:
#if 0
switch (mode) {
case IAC:
switch (cp) {
case WILL:
case WONT:
case DO:
case DONT:
mode = cp;
continue;
case IAC:
mode = 0;
break;
default:
/* Ignore */
mode = 0;
continue;
}
break;
case WILL:
case WONT:
pr_netio_printf(out_nstrm, "%c%c%c", IAC, DONT, cp);
mode = 0;
continue;
case DO:
case DONT:
pr_netio_printf(out_nstrm, "%c%c%c", IAC, WONT, cp);
mode = 0;
continue;
default:
if (cp == IAC) {
mode = cp;
continue;
}
break;
}
#endif
* This source code was highlighted with Source Code Highlighter.
Теперь конфигурируем, собираем и устанавливаем:
shell код:
./configure --with-modules=mod_sql:mod_sql_passwd:mod_sql_mysql --enable-openssl --disable-ipv6
cp /usr/local/mysql/include/mysql/mysql.h include/
cp /usr/local/mysql/include/mysql/mysql_com.h include/
cp /usr/local/mysql/include/mysql/mysql_time.h include/
cp /usr/local/mysql/include/mysql/mysql_version.h include/
cp /usr/local/mysql/include/mysql/my_alloc.h include/
cp /usr/local/mysql/include/mysql/my_list.h include/
cp /usr/local/mysql/include/mysql/typelib.h include/
cp /usr/local/mysql/lib/mysql/libmysqlclient.a lib/
make
make install
Если ставили не из портов, создаем файл запуска руками:
shell код:
cd /usr/local/etc/rc.d
joe proftpd
#!/bin/sh
#
# $FreeBSD: ports/ftp/proftpd/files/proftpd.sh.in,v 1.3 2009/02/27 15:14:00 dougb Exp $
#
# PROVIDE: proftpd
# REQUIRE: DAEMON
# BEFORE: LOGIN
# KEYWORD: shutdown
#
# Add the following lines to /etc/rc.conf to enable proftpd:
#
#proftpd_enable="YES"
#
# See proftpd(8) for flags
#
. /etc/rc.subr
name=proftpd
rcvar=`set_rcvar`
command=/usr/local/sbin/proftpd
pidfile=/var/run/proftpd.pid
required_files=/usr/local/etc/proftpd.conf
stop_postcmd=stop_postcmd
stop_postcmd()
{
rm -f $pidfile
}
# set defaults
proftpd_enable=${proftpd_enable:-"NO"}
proftpd_flags=${proftpd_flags:-""}
extra_commands="reload"
load_rc_config $name
start_cmd="echo \"Starting ${name}.\"; ${command} ${proftpd_flags} ${command_args}"
run_rc_command "$1"
chmod +x proftpd
Теперь ProFTPd установлен и можно приступить к его настройке. Для начала проверим, подключились ли модули работы с MySQL:
shell код:
cd /usr/local/libexec/
./proftpd -l | grep mod_sql.c
./proftpd -l | grep mod_sql_passwd.c
./proftpd -l | grep mod_sql_mysql.c
Теперь создать базу пользователей FTP. Для начала создадим пользователя БД:
shell код:
mysql -u root -p
CREATE DATABASE proftpd;
GRANT SELECT, INSERT, UPDATE, DELETE ON proftpd.* TO proftpd@localhost IDENTIFIED BY 'mysecretpassword';
* This source code was highlighted with Source Code Highlighter.
Зайдём теперь под только что созданным пользователем, и создадим в нашей базе нужные таблицы:
shell код:
mysql -u proftpd -p
USE proftpd;
CREATE TABLE users (
userid VARCHAR(30) NOT NULL UNIQUE,
passwd VARCHAR(80) NOT NULL,
uid INTEGER UNIQUE,
gid INTEGER,
homedir VARCHAR(255),
shell VARCHAR(255)
);
CREATE TABLE groups (
groupname VARCHAR(30) NOT NULL,
gid INTEGER NOT NULL,
members VARCHAR(255)
);
INSERT INTO groups VALUES ('ftp','5001','');
INSERT INTO users VALUES('test',MD5('testftp'),'5001','5001','/home/ftp/test','/sbin/nologin');
* This source code was highlighted with Source Code Highlighter.
Создаем лог-файл:
shell код:
touch /var/log/proftpd.log
Прописываем в /etc/rc.conf:
shell код:
proftpd_enable="YES"
proftpd_flags=""
Запускаем:
shell код:
/usr/local/etc/rc.d/proftpd start
Готово.
Статус статьи: Релиз, обновлена 10.01.2010.