MyTetra Share
Делитесь знаниями!
Pure-ftpd - установка, первичная настройка
Время создания: 23.06.2009 13:33
Раздел: Компьютер - Linux - Сеть в Linux - FTP
Запись: xintrea/mytetra_syncro/master/base/0000001049/text.html на raw.github.com

Установка рассматривается для Ubuntu. Настройка делается так, чтобы FTP-сервер имел своих FTP пользователей, и этих пользователей не приходилось создавать в системе.

Для работы pure-ftpd нужно будет создать пользователя ftpusers и группу ftpusers. Больше системных пользователей создавать будет ненужно.

Pure-ftpd позволяет хранить данные виртуальных аккаунтов в специальных файлах

формата puredb, подобном '/etc/passwd'. Помимо списка самих аккаунтов, данных авторизации и директорий пользователей, файл puredb может содержать такие данные, как индивидуальные квоты, параметры скорости работы с сервером, соотношения download/upload и некоторые другие опции, которые будут рассмотрены далее.

Установка

Если программа ставится из исходников, для включения поддержки puredb в pure-ftpd вам необходимо сконфигурировать сервер следующим образом:

./configure --with-puredb --with-peruserlimits --with-throttling --with-ratios --with-quotas

  • --with-puredb - включает поддержку puredb;
  • --with-peruserlimits - позволяет задавать ограничения для каждого пользователя;
  • --with-throttling - позволяет установить ограничение скорости работы с ftp для пользователей;
  • --with-ratios - позволяет установить соотношение download/upload для пользователей;
  • --with-quotas - позволяет установить квоту дискового пространства для пользователя;

Если программа устанавливается из репозитария, достаточно команды

# apt-get install pure-ftpd

В Ubuntu 7.04 сервер pure-ftpd собран с поддержкой puredb.

Настройка

Перед началом настройки сервера рекомендуется завести системный аккаунт,

которому будут принадлежать все директории виртуальных пользователей, чтобы в

дальнейшем избежать путаницы с правами.

Создадим группу ftpusers и добавим пользователя ftpusers:

для linux:

groupadd ftpusers

useradd -g ftpusers -d /home/ftpusers -s /sbin/nologin ftpusers

для freebsd:

pw groupadd ftpusers

pw useradd ftpusers -g ftpusers -d /home/ftpusers -s /sbin/nologin

Далее добавим директорию и назначим права на нее для пользователя ftpusers:

mkdir /home/ftpusers

chown ftpusers:ftpusers /home/ftpusers

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

1. Создание файла со списком аккаунтов пользователей и их параметрами (по умолчанию '/etc/pure-ftpd/pureftpd.passwd'), на этом этапе вы также cможете вносить изменения в список аккаунтов;

2. Создание на основе файла списка бинарного файла, с которым в конечном итоге и будет работать сервер (по умолчанию '/etc/pure-ftpd/pureftpd.pdb');

Альтернативные значения для passwd-файла и pdb-файла могут быть заданы с помощью переменных окружения 'PURE_PASSWDFILE' и 'PURE_DBFILE' соответственно.

Все операции над аккаунтами будут осуществляться с помощью утилиты 'pure-pw', входящей в пакет pure-ftpd.

Создание файла аккаунтов

Каждая запись файла виртуальных аккаунтов имеет следующий формат:

account:pass:uid:gid:name:dir:ul bw:

dl bw:ul ratio:dl ratio:max con:

files quota:size quota:authorized local IPs:refused

local IPs:authorized client IPs:refused client IPs:time

Рассмотрим значения полей записи:

  • 'account' -- имя аккаунта;
  • 'pass' -- пароль пользователя в зашифрованном виде;
  • 'uid' -- uid пользователя, с правами которого будет работать виртуальный пользователь;
  • 'gid' -- gid пользователя, с правами которого будет работать виртуальный пользователь;
  • 'name' -- полное имя пользователя аккаунта;
  • 'dir' -- директория пользователя аккаунта;
  • 'ul bw' -- скорость upload для данного аккаунта;
  • 'dl bw' -- скорость download для данного аккаунта;
  • 'ul ratio' -- соотношение upload к download;
  • 'dl ratio' -- соотношение download к upload;
  • 'max con' -- максимальное число одновременных подключений для данного аккаунта;
  • 'files quota' -- квота на количество файлов в директории пользователя;
  • 'size quota' -- квота на суммарный размер файлов в директории пользователя;
  • 'auth local IPs' -- указывает ip адрес интерфейса сервера, на который пользователь может подключаться (при наличии нескольких сетевых интерфейсов на сервере);
  • 'ref local IPs' -- указывает ip адрес интерфейса сервера, на который пользователь подключаться не может;
  • 'auth client IPs' -- ip адреса, с которых пользователю разрешено подключаться;
  • 'ref client IPs' -- ip адреса, с которых пользователя запрещено подключаться;
  • 'time' -- временной промежуток, в течение которого пользователь может получать доступ к аккаунту.

Допускается пустое значение всех полей кроме 'account', 'pass', 'uid', 'gid' и 'dir'.

Добавление нового аккаунта

Добавление аккаунта осуществляется с помощью утилиты 'pure-pw'.

Синтаксис команды следующий:

pure-pw useradd login [-f file]

-u uid [-g gid]

-D/-d dir

[-c name]

[-t num] [-T num]

[-n num] [-N num]

[-q num] [-Q num]

[-r ip,..]

[-R ip,..]

[-i ip,..]

[-I ip,..]

[-y num]

[-z hhmm-hhmm] [-m]

Рассмотрим значения используемых опций:

  • 'login' -- имя добавляемого аккаунта;
  • '-f file' -- задает имя файла списка аккаунтов, отличное от значения по умолчанию, т.е. от '/etc/pureftpd.passwd'.
  • '-u uid' -- задает uid пользователя;
  • '-g gid' -- задает gid пользователя;
  • '-D/-d dir' -- задает директорию для пользователя аккаунта, при использовании '-d' автоматически назначается chroot в этой директории, при использовании '-D' chroot не будет включен; При запуске сервера с опцией '-j' директории пользователей будут создаваться автоматически при первом их подключении к системе, в противном случае, вы сами должны будете создать указанную директорию;
  • '-c name' -- задает полное имя пользователя аккаунта;
  • '-t num' -- задает скорость download (в Kb/s);
  • '-T num' -- задает скорость upload (в Kb/s);
  • '-n num' -- задает ограничение на количество файлов в директории пользователя;
  • '-N num' -- задает ограничение на размер файлов в директории пользователя (в Mb);
  • '-q num' -- задает соотношение upload к download;
  • '-Q num' -- задает соотношение download к upload;
  • '-r ip' -- задает ip адреса, с которых пользователю разрешено подключаться, также можно задавать целые подсети, используя CIDR маску;
  • '-R ip' -- задает ip адреса, с которых пользователю запрещено подключаться;
  • '-i ip' -- при нескольких интерфейсах на сервере позволяет указать ip адрес того интерфейса, на который данный пользователь может подключаться;
  • '-I ip' -- при нескольких интерфейсах на сервере позволяет указать ip адрес того интерфейса, на который пользователь подключаться не может;
  • '-y num' -- задает количество одновременных подключений для аккаунта;
  • '-z hhmm-hhmm' -- задает временной промежуток, в течение которого пользователь может получать доступ к аккаунту, например '-z 1830-2240' задает временной промежуток для доступа к аккаунту с 18:30 до 22:40, причем если пользователь подключен к серверу во время истечения указанного значения, соединение не будет прервано.
  • '-m' -- использовании этой опции совместно с остальными позволяет автоматически запустить 'pure-pw mkdb' и зафиксировать внесенные изменения в файле '/etc/pure-ftpd/pureftpd.pdb'. Работа с 'pure-pw mkdb' будет рассмотрена чуть позже.

Таким образом, в простейшем случае добавление аккаунта осуществляется

следующим образом:

# pure-pw useradd tester -u ftpusers -g ftpusers -d /home/ftpusers/tester

После этой команды вы получите запрос на ввод пароля для tester.

Изменение параметров аккаунта

Изменение параметров аккаунта также осуществляется с помощью pure-pw:

# pure-pw usermod login [-f passwd file] attr value [attr value ...] [-m]

'attr value' в данном случае -- это те же параметры, которые используются при добавлении нового аккаунта.

Не забывайте использовать параметр '-f passwd file' в том случае, если список аккаунтов изначально создавался в файле, отличном от '/etc/pure-ftpd/pureftpd.passwd'.

Сброс установленных значений

Для сброса параметров конфигрурации pure-pw запускается со следующими опциями:

  • 'pure-pw usermod login -n ''' -- сброс квот на количество файлов;
  • 'pure-pw usermod login -N ''' -- сброс квот на размер файлов;
  • 'pure-pw usermod login -q '' -Q ''' -- сброс соотношений download/upload;
  • 'pure-pw usermod login -t ''' -- сброс ограничения скорорсти download;
  • 'pure-pw usermod login -T ''' -- сброс ограничения скорости upload;
  • 'pure-pw usermod login -i '' -I '' -r '' -R ''' -- сброс соответствующих ограничений по ip;
  • 'pure-pw usermod login -z ''' -- сброс временных ограничений;
  • 'pure-pw usermod login -y ''' -- сброс ограничений на количество подключений.

Удаление аккаунтов

Удаление аккаунта осуществляется следующим образом:

# pure-pw userdel login [-f passwd file] [-m]

Изменение пароля

Изменение пароля осуществляется следующим образом:

# pure-pw passwd login [-f passwd file] [-m]

Фиксирование изменений

После добавления (удаления, модификации) данных аккаунта изменения не вступят в силу, пока не будет обновлен файл '/etc/pure-ftpd/pureftpd.pdb'.

Для создание нового файла 'pureftpd.pdb', используйте следующую команду:

# pure-pw mkdb

В том случае, если вы используете имена файлов, отличныные от '/etc/pure-ftpd/pureftpd.passwd' и '/etc/pure-ftpd/pureftpd.pdb', файлы необходимо указать явно:

'pure-pw mkdb /path/to/file.pdb -f /path/to/files.passwd'.

Чтобы избежать использования 'pure-pw mkdb' после каждого изменения данных,

используйте опцию '-m' в командах модификации, например:

# pure-pw useradd andrew -u ftpusers -g ftpusers -d /home/ftpusers/andrew -m

Таким образом изменения сразу же будут внесены в файл 'pureftpd.pdb'.

Получение информации об аккаунтах

Для просмотра данных аккаунта используется следующий синтаксис 'pure-pw':

# pure-pw show login [-f passwd file]

Запуск сервера

Сервер можно просто запустить как демон. Чтобы работали настроенные через pure-pw аккаунты, сервер должен запускаться со стандартными опциями, и с указанием файла с данными авторизации пользователей с помощью опции '-l':

# pure-ftpd -14ABEH -p 33000:35000 -l puredb:/etc/pure-ftpd/pureftpd.pdb

После запуска нужно проверить, запустился ли сервер. Для этого можно дать команды

# ps aux | grep pure

- покажет, появился ли процесс

# netstat -lnp | grep 21

- покажет, какая программа (демон) слушает 21-й порт

если процесса не появилось, или видно, что 21-й порт слушает другая программа, или если при старте pure-ftpd была написана ошибка, или если pure-ftpd молча запустился, но не работает, и в довершение ко всему, в файле /var/log/syslog есть ошибки вида

pure-ftpd[14069]: (?@?) [ERROR] Unable to start a standalone server: [Invalid argument]

...

pure-ftpd[14067]: (?@?) [ERROR] Unable to start a standalone server: [Illegal seek]

то это скорее всего значит, что 21-й порт занят inetd-демоном. В Ubuntu 7.04 этот демон называется

/usr/sbin/inetutils-inetd

и его работа управляется через файл /etc/inetd.conf. Если в системе есть демон inetutils-inetd, то можно поступить двумя способами.

1. Неправильный, но для проверки работоспособности pure-ftpd сгодится. Можно закомментировать в файле /etc/inetd.conf строку, отвечающую за ftp-протокол. Затем уничтожить процесс inetutils-inetd, и снова его запустить командой

# /usr/sbin/inetutils-inetd

После этого командой netstat -lnp | grep 21 удостоверится, что порт 21 не занят, и запустить pure-ftpd как демона (должна присутсвовать опция B).

2. Правильный. Если в системе уже есть inetutils-inetd, то его надо настроить так, чтобы при входящем соединении на порт 21, он вызывал запуск pure-ftpd.

Так же в этом разделе:
 
MyTetra Share v.0.59
Яндекс индекс цитирования