Используемое ПО: PureFTPd - вот он сам сервер красавец. Достаточно
защищенный сервер, не падает, не глючит, поддерживает много функций,
включая даже интеграцию с mysql если оно надо конечно, но в тоже время
настолько легко и быстро настраиваемый. У этого FTP сервера есть 2
варианта настройки. Первый вариант используя config файл, и второй
вариант не используя. В данной статье будет рассмотрен именно второй
вариант. Взять можно отсюда: PureFtpd Official Site Скачали, распаковали, далее делаем стандартные операции установки из исходников:
Распаковываем и простыми сочетаниями команд устанавливаем
./configure --with-rfc2640 --with-everything --prefix=/usr/local/pure-ftpd
make
sudo make install
--with-rfc2640 - необходима для перекодировки названий файлов на лету в разные кодировки
(в моем случае клиенты подсоединяются к серверу с кодировкой cp1251 а на
сервере же кодировка UTF-8)
--with-everything - создание демона с поддержкой всех функций Pure-FTPd
--prefix=/usr/local/pure-ftpd - каталог, куда собственно демон устанавливать
Теперь когда сервер установлен переходим к базовой конфигурации. Копируем
конфигурационный файл в /etc из каталога с исходниками
cp configuration-file/pure-ftpd.conf /etc/pure-ftpd.conf
Добавляем следующие строки в конфигурационный файл:
ExtAuth /var/run/ftpd.sock # Включаем авторизацию по скрипту
UserBandwidth 100 # Ограничиваем полосу в 100 Kb/c для каждого пользователя,
# чтобы они не забивали весь канал
MaxDiskUsage 90 # Установив это значение, мы запрещаем загрузку файлов на сервер,
# в случае если осталось всего 10% свободного места
FileSystemCharset UTF-8 # Говорим что на сервере кодировка UTF-8
ClientCharset CP1251 # А у пользователей CP1251
Создаем авторизующий скрипт /usr/local/pure-ftpd/sbin/ftp-auth-handler
Со следующим содержанием:
if test "$AUTHD_REMOTE_IP" = "192.168.0.102"; then
echo 'auth_ok:1'
echo 'uid:69'
echo 'gid:42'
echo 'dir:/tmp'
else
echo 'auth_ok:0'
fi
echo 'end'
Этот скрипт успешно авторизует любого пользователя с IP 192.168.0.201
Кроме $AUTHD_REMOTE_IP в скрипте можно использовать следующие переменные:
AUTHD_ACCOUNT
AUTHD_PASSWORD
AUTHD_LOCAL_IP
AUTHD_LOCAL_PORT
AUTHD_REMOTE_IP
AUTHD_ENCRYPTED
В ответе скрипта можно передавать следующие параметры
uid:xxx - UID пользователя в системе
gid:xxx - GID пользователя в системе
dir:xxx - Абсолютный путь до домашней директории
throttling_bandwidth_ul:xxx - Ширина канала закачки на сервер
throttling_bandwidth_dl:xxx - Ширина канала скачки с сервера
user_quota_size:xxx - Дисковая квота пользователя в байтах
user_quota_files:xxx - Максимальное количество файлов для пользователя
per_user_max:xxx - Максимальное количество одновременных сессий
После этого осталось запустить сам сервер.
Скопируем запускающий скрипт pure-config.pl из каталога с исходниками
cp configuration-file/pure-config.pl /usr/local/pure-ftpd/sbin/
Для запуска сервера выполняем следующую команду:
/usr/local/pure-ftpd/sbin/pure-config.pl /etc/pure-ftpd.conf
Для запуска демона авторизации выполняем это:
/usr/local/pure-ftpd/sbin/pure-authd -s /var/run/ftpd.sock -r /usr/local/pure-ftpd/sbin/ftp-auth-handler &
К примеру в моем любимом дистрибутиве Slackware Linux - каталог /home/ftp
В SUSE Linux 9.3 Professional - каталог /srv/ftp
В RedHat Based - каталог /var/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 работает Автозагрузка: Файл автозагрузки в Slackware Linux - /etc/rc.d/rc.local Просто добавляем в конец файла строчку
pure-ftpd -4 -A -B -M -l unix -U022:022
Все просто ;)
Источник: http://www.opennet.ru/base/net/linux_pureftp.txt.html |