FreeBSD : Хранение аккаунтов pure-ftpd в файлах формата puredb

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' -- позволяет установить квоту дискового пространства для пользователя;

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

Создадим группу 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/pureftpd.passwd'), на этом этапе вы также cможете
  вносить изменения в список аккаунтов;

2. Создание на основе файла списка бинарного файла,
  с которым в конечном итоге и будет работать сервер (по умолчанию '/etc/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/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/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/pureftpd.pdb'.

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

   'pure-pw mkdb'.

В том случае, если вы используете имена файлов, отличныные от '/etc/pureftpd.passwd'
и '/etc/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]'.
Вы только посетили наш сайт, КОММЕНТИРОВАНИЕ будет доступно через несколько минут.
возможно у Вас отключен javascript, если включен - просто обновите страницу