Ключевые слова:ftp, (найти похожие документы)
From: Ушаков Андрей
Newsgroups: email
Date: Mon, 26 Jan 2004 14:31:37 +0000 (UTC)
Subject: Хранение аккаунтов 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]'.
--------------
Запуск сервера
--------------
Как правило, сервер запускается со стандартными опциями, но с указанием файла
с данными авторизации пользователей с помощью опции '-l':
'/usr/local/sbin/pure-ftpd -14ABEH -p 33000:35000 -l puredb:/etc/pureftpd.pdb'.
Всё хорошо, но на мой взгляд целесообразние весь етот "комбайн" запускать с ключом -j. Так можно избезать ненужной паревы с созданием коталогов. [ /usr/local/sbin/pure-ftpd -14ABEH -j -p 33000:35000 -l puredb:/etc/pureftpd.pdb ]