FTP Сервер pureftpd

Взять можно отсюда: PureFtpd Official Site.

Скачали, распаковали, далее делаем стандартные операции установки из исходников:

Для установки полного функционала сделать ./configure —with-everything

./configure
make
make install

После этого надо удостовериться какая home директория у пользователя ftp Выяснить это можно просмотрев файл /etc/passwd В разных дистрибутивах Linux домашняя директория пользователя ftp имеет разный путь.

К примеру в моем любимом дистрибутиве Centos Linux — каталог /home/ftp

Собственно я надеюсь что менять домашние директории у пользователей вы умеете, если Вам это надо.

В данной статье будет директория /home/ftp

Далее надо создать 2 директории:

mkdir /home/ftp/pub
mkdir /home/ftp/incoming

Создать пользователя ftpadmin , это будет админский аккаунт FTP, его домашняя директория будет /home/ftp

adduser ftpadmin

Далее надо назначить права на директорию incoming

chmod -R 0777 /home/ftp/incoming

Далее надо назначить права на директорию pub

chmod -R 0755 /home/ftp/pub

Сделали.

Ну а теперь запустим сам FTP сервер.

pure-ftpd -4 -A -B -M -l unix -U 022:022

Параметры: -4 — ipv4only, -A — chroot everyone — обязательный параметр (запирает пользователя в его домашней директории) -B — режим демона, -l unix использовать для аутентификации пароли unix, -U — выбираем маску для файлов и директорий — подробнее об этом параметре — man pure-ftpd.

Вариант анонимного FTP с поддержкой учетных записей:

pure-ftpd -4 -A -B -M -l unix -U 022:022

Вариант только анонимного FTP:

pure-ftpd -4 -A -B -M -e -U 022:022

Вариант только НЕ анонимного FTP:

pure-ftpd -4 -A -B -M -E -U 022:022

Все 😉 FTP работает

Автозагрузка:

Файл автозагрузки в Centos Linux — /etc/rc.d/rc.local

Просто добавляем в конец файла строчку

pure-ftpd -4 -A -B -M -l unix -U 022:022

Устанавливаем на Centos pure-ftpd + MySQL

Будем считать, что MySQL уже установлен. Для установки pure-ftpd нам необходимо подключить RPMForge. Далее:

yum install pure-ftpd

Добавляем группу и пользователя к которому будут мапиться наши виртуальные пользователи:

groupadd -g 2001 ftpgroup
useradd -u 2001 -s /bin/false -d /bin/null -c «pureftpd user» -g ftpgroup ftpuser

Заходим в консоль MySQL и выполняем:

CREATE DATABASE pureftpd;
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON pureftpd.* TO ‘pureftpd’@’localhost’ IDENTIFIED BY ‘ftpdpass’;
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON pureftpd.* TO ‘pureftpd’@’localhost.localdomain’ IDENTIFIED BY ‘ftpdpass’;
FLUSH PRIVILEGES;
USE pureftpd;
CREATE TABLE ftpd (
User varchar(16) NOT NULL default »,
status enum(‘0′,’1’) NOT NULL default ‘0’,
Password varchar(64) NOT NULL default »,
Uid varchar(11) NOT NULL default ‘-1’,
Gid varchar(11) NOT NULL default ‘-1’,
Dir varchar(128) NOT NULL default »,
ULBandwidth smallint(5) NOT NULL default ‘0’,
DLBandwidth smallint(5) NOT NULL default ‘0’,
comment tinytext NOT NULL,
ipaccess varchar(15) NOT NULL default ‘*’,
QuotaSize smallint(5) NOT NULL default ‘0’,
QuotaFiles int(11) NOT NULL default 0,
PRIMARY KEY (User),
UNIQUE KEY User (User)
) TYPE=MyISAM;

Добавляем пользователя

INSERT INTO `ftpd` (`User`, `status`, `Password`, `Uid`, `Gid`, `Dir`, `ULBandwidth`, `DLBandwidth`, `comment`, `ipaccess`, `QuotaSize`, `QuotaFiles`) VALUES (‘exampleuser’, ‘1’, ‘secret’, ‘2001’, ‘2001’, ‘/home/www.example.com’, ‘100’, ‘100’, », ‘*’, ’50’, ‘0’);
quit;

Теперь время отредактировать конфиги, в /etc/pure-ftpd/pure-ftpd.conf

ChrootEveryone yes
[…]
MySQLConfigFile /etc/pure-ftpd/pureftpd-mysql.conf
[…]
CreateHomeDir yes

и в /etc/pure-ftpd/pureftpd-mysql.conf

MYSQLSocket /var/lib/mysql/mysql.sock
#MYSQLServer localhost
#MYSQLPort 3306
MYSQLUser pureftpd
MYSQLPassword ftpdpass
MYSQLDatabase pureftpd
#MYSQLCrypt md5, cleartext, crypt() or password() — md5 is VERY RECOMMENDABLE uppon cleartext
MYSQLCrypt md5
MYSQLGetPW SELECT Password FROM ftpd WHERE User=»\L» AND status=»1″ AND (ipaccess = «*» OR ipaccess LIKE «\R»)
MYSQLGetUID SELECT Uid FROM ftpd WHERE User=»\L» AND status=»1″ AND (ipaccess = «*» OR ipaccess LIKE «\R»)
MYSQLGetGID SELECT Gid FROM ftpd WHERE User=»\L»AND status=»1″ AND (ipaccess = «*» OR ipaccess LIKE «\R»)
MYSQLGetDir SELECT Dir FROM ftpd WHERE User=»\L»AND status=»1″ AND (ipaccess = «*» OR ipaccess LIKE «\R»)
MySQLGetBandwidthUL SELECT ULBandwidth FROM ftpd WHERE User=»\L»AND status=»1″ AND (ipaccess = «*» OR ipaccess LIKE «\R»)
MySQLGetBandwidthDL SELECT DLBandwidth FROM ftpd WHERE User=»\L»AND status=»1″ AND (ipaccess = «*» OR ipaccess LIKE «\R»)
MySQLGetQTASZ SELECT QuotaSize FROM ftpd WHERE User=»\L»AND status=»1″ AND (ipaccess = «*» OR ipaccess LIKE «\R»)
MySQLGetQTAFS SELECT QuotaFiles FROM ftpd WHERE User=»\L»AND status=»1″ AND (ipaccess = «*» OR ipaccess LIKE «\R»)

И в завершении добавляем pure-ftpd в автозагрузку и запускаем

chkconfig pure-ftpd on
service pure-ftpd start

Установка FTP сервера Vsftpd

Vsftpd очень хороший, быстрый и надежный FTP сервер. Устанавливаем сам сервер при помощи yum:

yum install vsftpd

Vsftpd работает из коробки, особо ничего конфигурировать не надо.
Файл конфигурации /etc/vsftpd/vsftpd.conf.
Для запуска сервера FTP выполните команду:

service vsftpd start

Для запуска FTP-сервера, при загрузки системы:

chkconfig vsftpd on

Убедитесь, что брандмауэр не блокирует доступ к порту FTP, выполните:

system-config-securitylevel

Allow (FTP) as «Trusted Services»

Настраиваем ftp сервер vsftpd

Итак, с начала инсталлируем сам vsftpd, при помощи yum:

yum install vsftpd

После установки заходим в /etc/vsftpd/ и редактируем конфиг vsftpd.conf :

#отключаем анонимный доступ
anonymous_enable=NO
#разрешать ли доступ для локальных пользователей
local_enable=YES
#разрешить запись
write_enable=YES
local_umask=022
dirmessage_enable=YES
connect_from_port_20=YES
#Стандартный формат логов
xferlog_std_format=YES
#Включаем chroot
chroot_list_enable=YES
#Список пользователей который будут #ограничены в их домашних каталогах
chroot_list_file=/etc/vsftpd/chroot_list
#Stanalone режим
listen=YES
#Имя PAM сервиса
pam_service_name=vsftpd
#Использовать список пользователей
userlist_enable=YES
tcp_wrappers=YES

Теперь заводим пользователя, даем ему пароль и все, можно пользоваться. Доступ будет в домашнюю папку пользователя если для него включен chroot.