Установить ProFTP с mysql модулем из исходников на Debian (виртуальные пользователи)

Очень срочно понадобилось собрать ftp сервер с виртуальными пользователями. Я привык работать с Proftp и посему выбор пал именно на него. Вы можете выбрать какой либо другой, например vsftp или pureftp — это ваше дело. А сейчас речь пойдет об установки Proftp из исходного кода и виртуальными пользователями.

Установить Proftp-mysql из source на Debian:



Так как сервер был тестовый, то я использовал самую последнию версию proftp, а именно rc 1.3.4 и так приступим к установке

cd /tmp
wget ftp://ftp1.at.proftpd.org/ProFTPD/distrib/source/proftpd-1.3.4rc3.tar.gz


tar -xvf proftpd-1.3.4rc3.tar.gz
cd proftpd-1.3.4rc3


теперь мы выполним конфигурацию и зададим какие модули нам необходимы
./configure –sysconfdir=/etc –localstatedir=/var \
–with-modules=mod_sql:mod_sql_mysql:mod_quotatab:mod_quotatab_sql \
–with-includes=/usr/include/mysql –with-libraries=/usr/lib/mysql


доставим модуль, который необходим для работы proftp с mysql
apt-get install libmysql++-dev

собираем и устанавливаем
make
make install


после редактируем наш конфиг и приводим его к такому виду
nano /etc/proftpd.conf

ServerName «My server name»
ServerType standalone
DefaultServer on
Port 21
Umask 022
MaxInstances 30

# определяем пользователя и группу, от чьего имени будет работать proftpd
User nobody
Group nogroup
DefaultRoot ~
RequireValidShell off

# в этом блоке определяем детали работы proftpd с mysql
SQLConnectInfo proftpd@localhost proftpd proftpd
SQLAuthTypes PlainText
SQLUserInfo users userid passwd uid gid homedir shell
SQLGroupInfo groups groupname gid members
SQLAuthenticate users groups
SQLLogFile /var/log/proftpd.log # определяем, куда будем вести лог


сохраняем и закрываем. Теперь нам нужны логи, которые время от времени можно читать. Создаем файл лого:

touch /var/log/proftpd.log
chmod 666 /var/log/proftpd.log


создадим группу для ftp c gid 6000
groupadd -g 6000 ftp

заводим ftp пользователя
useradd -u 6000 -s /bin/false -d /bin/null -c proftpd -g ftp ftp

теперь приступим к установки и связи БД:

создаем базу данных proftpd и заливаем туда эту структуру
-- --------------------------------------------------------

CREATE DATABASE `proftpd`;

-- Обратите внимание на этот раздел. Здесь описывается имя и пароль пользователя, от имени которого мы будем работать с базой proftpd

GRANT SELECT, INSERT, UPDATE, DELETE ON proftpd.* TO 'proftpd'@'localhost' IDENTIFIED BY 'proftpd'; 
GRANT SELECT, INSERT, UPDATE, DELETE ON proftpd.* TO 'proftpd'@'localhost.localdomain' IDENTIFIED BY 'proftpd'; 
FLUSH PRIVILEGES;

-- конец раздела описания привилегий

USE `proftpd`;

-- 
-- Структура таблицы `groups`
-- 

CREATE TABLE `groups` (
  `groupname` varchar(30) collate cp1251_ukrainian_ci NOT NULL,
  `gid` int(11) NOT NULL,
  `members` varchar(255) collate cp1251_ukrainian_ci default NULL
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 COLLATE=cp1251_ukrainian_ci;

-- --------------------------------------------------------

-- 
-- Структура таблицы `users`
-- 

CREATE TABLE `users` (
  `userid` varchar(30) collate cp1251_ukrainian_ci NOT NULL,
  `passwd` varchar(80) collate cp1251_ukrainian_ci NOT NULL,
  `uid` int(11) default NULL,
  `gid` int(11) default NULL,
  `homedir` varchar(255) collate cp1251_ukrainian_ci default NULL,
  `shell` varchar(255) collate cp1251_ukrainian_ci default NULL,
  UNIQUE KEY `userid` (`userid`),
  UNIQUE KEY `uid` (`uid`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 COLLATE=cp1251_ukrainian_


а вот теперь можем добавить первого, виртуального пользователя ftp
mysql -u root -p
use proftpd
mysql>INSERT INTO groups (groupname,gid) VALUES (‘ftp’,’6000′);
mysql>INSERT INTO users (userid,passwd,uid,gid,homedir,shell) VALUES (‘newuser’, 'passw',6000,6000,’/home/newuser’,'/sbin/nologin’);


и наконец запускаем ftp сервер:
proftpd

0 комментариев

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.