The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

Настройка 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

Обсуждение [ Линейный режим | Показать все | RSS ]
  • 1.1, тигар (ok), 00:28, 12/08/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    стесняюсь спросить... а в Вашем дистрибутиве есть "пакетный менеджер" ? или wget+configure+make дает что-то архикошерное?
     
     
  • 2.2, Аноним (-), 01:51, 12/08/2009 [^] [^^] [^^^] [ответить]  
  • +/
    В пакетах может оказаться что-то без чего-то.
    Например, без поддержки rfc2640.
    И еще, совет мог быть для debian, а людям подавай freebsd.
     
     
  • 3.4, FrBrGeorge (ok), 10:44, 12/08/2009 [^] [^^] [^^^] [ответить]  
  • +/
    > В пакетах может оказаться что-то без чего-то.

    "Может оказаться"? Тогда это -- не Ваш дистрибутив :).

    > людям подавай freebsd

    Там rfc2640 по умолчанию выключен, но включается он способом. не похожим на описаный выше.

     
  • 2.3, Sw00p aka Jerom (?), 10:40, 12/08/2009 [^] [^^] [^^^] [ответить]  
  • –1 +/
    А чем вас не устраивает wget+configure+make ????

    ./configure --help

    более гибко и кустомизированно не то что дефолт (по дефолту это тока в винде)

     
     
  • 3.5, тигар (ok), 11:01, 12/08/2009 [^] [^^] [^^^] [ответить]  
  • +2 +/
    тем что установленный таким образом софт не будет виден среди установленных пакетов. что есть говно (ящитаю).
    хотя если у Вас шлакварь или убунту это простительно;-)
     
  • 3.9, FrBrGeorge (ok), 00:19, 13/08/2009 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >А чем вас не устраивает wget+configure+make ????
    >
    >./configure --help
    >
    >более гибко и кустомизированно не то что дефолт (по дефолту это тока
    >в винде)

    Бессмысленным расходом собственного времени на сопровождение получившейся инсталляции. Вам знакомо понятие "хранилище обновлений по безопасности"? Или "portaudit"? А на дюжине серверов?

     

  • 1.6, re (?), 13:43, 12/08/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    а какая проблема в том что он не будет виден среди установленных пакетов?
    убонтовод? потерялся сразу?
     
     
  • 2.7, тигар (ok), 14:36, 12/08/2009 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >а какая проблема в том что он не будет виден среди установленных
    >пакетов?
    >убонтовод? потерялся сразу?

    а проблема одна. я получая машину после таких "админов" громко матом разговариваю. ибо вывод например sockstat -4l и pkg_info говорит о разных вещах. а теперь вопрос знатоку: откуда эти команды? из убунты?

     
     
  • 3.11, o.k. (?), 02:55, 14/08/2009 [^] [^^] [^^^] [ответить]  
  • +/
    +миллион
    та же хрень.. недавно отказался от администрирования подобного веб сервера.
    нормальный админ всегда соберет пакет.
     
  • 2.8, FrBrGeorge (ok), 00:16, 13/08/2009 [^] [^^] [^^^] [ответить]  
  • +/
    >а какая проблема в том что он не будет виден среди установленных
    >пакетов?

    Если у вас один сервер и одна собранная вручную установка ПО -- проблем нет. Но такие ситуации в бою уже не встречаются, только в учении остались.
    >убонтовод? потерялся сразу?

    Фи. Как не стыдно.

    Можете (как неубунтовод?) предложить разумную ручную реализацию того, что делает portaudit или обновление из update-хранилищ?

     
     
  • 3.10, Анонимус. (?), 15:54, 13/08/2009 [^] [^^] [^^^] [ответить]  
  • +/
    >[оверквотинг удален]
    >
    >Если у вас один сервер и одна собранная вручную установка ПО --
    >проблем нет. Но такие ситуации в бою уже не встречаются, только
    >в учении остались.
    >>убонтовод? потерялся сразу?
    >
    >Фи. Как не стыдно.
    >
    >Можете (как неубунтовод?) предложить разумную ручную реализацию того, что делает portaudit или
    >обновление из update-хранилищ?

    Он смог и написал статью. А половина сраных тем от убунтоводов и дебьянщиков нахер не нужны.

    Забыл что такое команда which и locate ,,? быдло сборки пакетов не нужны.

     
     
  • 4.12, o.k. (?), 02:57, 14/08/2009 [^] [^^] [^^^] [ответить]  
  • +/
    >[оверквотинг удален]
    >>Фи. Как не стыдно.
    >>
    >>Можете (как неубунтовод?) предложить разумную ручную реализацию того, что делает portaudit или
    >>обновление из update-хранилищ?
    >
    >Он смог и написал статью. А половина сраных тем от убунтоводов и
    >дебьянщиков нахер не нужны.
    >
    >Забыл что такое команда which и locate ,,? быдло сборки пакетов не
    >нужны.

    Вы просто не умеете собирать пакеты.

     
     
  • 5.13, Анонимус. (?), 12:04, 14/08/2009 [^] [^^] [^^^] [ответить]  
  • +/
    Умею. Но я вижу очень часто , вопли по поводу сборок так называемых в ковычках.

    Вы видимо кроме opennet.ru ни на какие форумы не заходите.

    http://www.linuxquestions.org/

    welcome ./

     
  • 4.14, FrBrGeorge (ok), 15:44, 16/08/2009 [^] [^^] [^^^] [ответить]  
  • +/
    >>Можете (как неубунтовод?) предложить разумную ручную реализацию того, что делает portaudit или обновление из update-хранилищ?
    >Он смог и написал статью.

    Пруфлинк? Ой, извиняюсь... Вас не спрашивали?
    >Забыл что такое команда which и locate ,,?

    Готов поверить. Иначе бы не намекали, что они обладают свойствами portaudit.

    Вообще, если бы не анонимность, вы здорово опустили бы себя подобным комментарием.

     
     
  • 5.15, Анонимус. (?), 15:12, 18/08/2009 [^] [^^] [^^^] [ответить]  
  • +/
    Вопрос про аналог portaudit задавался не мне. Читай внимательно.

    А тебе не наплевать про анонимность?

    Я тебе могу накидать  вагон ссылок где нубы тыкаются если что то в пакете не собрано.

    Мне срать как то , у меня все конфиги штатно лежат . А вот некоторые пакеты приходится

    пересобирать руками. Да и какая тебе нахрен разника где бинарник?

    Конфиги по дефолту. Если нет пиз..ы админу.

     
     
  • 6.16, FrBrGeorge (ok), 16:15, 19/08/2009 [^] [^^] [^^^] [ответить]  
  • +/
    >>Пруфлинк? Ой, извиняюсь... Вас не спрашивали?
    >Вопрос про аналог portaudit задавался не мне.

    Вы меня правильно поняли :)

    >Я тебе могу накидать  вагон ссылок где нубы тыкаются если что-то в пакете не собрано.

    Ну, это уже по совсем другой теме, хотя она здесь тоже возникала: если вы всё ещё "тыкаетесь", значит, это пока что не ваш дистрибутив.

    >Мне срать как то , у меня все конфиги штатно лежат .

    Это в /etc, /usr/local/etc, /opt/*/etc, /val/lib/*/etc и /home/*/*/etc? Или вы патчите софт на предмет складывания конфигов не туда, куда upstream их суёт, а в какое-то "штатное" место?

    >А вот некоторые пакеты приходится пересобирать руками. Да и какая тебе нахрен разника где бинарник?

    Где -- разницы никакой. Главное, чтобы обновление N пакетов на M площадках не "приходилось собирать руками" N*M раз. Хотя бы свести этот гемор к M операциям обновления. Но лучше к нулю. Это если вы доверяете тому хранилищу, откуда обновляетесь автоматически.

     

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:




    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру