[an error occurred while processing this directive]

Настройка Pure-FTPd c авторизацией по скрипту
Для Unix систем есть большое количество серверов ftp обладающих богатым функционалом, 
каждый из которых обладает своими особенностями. Но в один прекрасный день мне
потребовалось организовать
авторизацию с помощью скрипта, который в зависимости от IP адреса должен был
пускать в разные домашние
директории. После недолгих поисков в интернете я обнаружил, что у Pure-FTPd
авторизация по скрипту -
штатная возможность. Итак, приступим.

Скачиваем архив с актуальной на текущий момент версии (в момент написания этой
статьи текущая версия 1.0.22)

   wget http://download.pureftpd.org/pub/pure-ftpd/releases/pure-ftpd-1.0.22.tar.bz2

Распаковываем и простыми сочетаниями команд устанавливаем
   ./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 &

Осталось внести последние две строчки в автозагрузку, и на этом базовая
настройка сервера закончена.
 
12.08.2009 , Автор: ExpE , Источник: http://tips.compuserv.biz/index.php...
Ключи: ftp, pureftpd, auth
Раздел:    Корень / Администратору / Сетевые сервисы / FTP, Bittorrent

[an error occurred while processing this directive]

[an error occurred while processing this directive]