Хранение аккаунтов pure-ftpd в файлах формата puredb (ftp)
Ключевые слова: 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 вам необходимо сконфигурировать сервер
следующим образом:
'--with-puredb' -- включает поддержку puredb;
'--with-peruserlimits' -- позволяет задавать ограничения для каждого пользователя;
'--with-throttling' -- позволяет установить ограничение скорости работы с ftp для пользователей;
'--with-ratios' -- позволяет установить соотношение download/upload для пользователей;
'--with-quotas' -- позволяет установить квоту дискового пространства для пользователя;
Перед началом настройки сервера рекомендуется завести системный аккаунт,
которому будут принадлежать все директории виртуальных пользователей, чтобы в
дальнейшем избежать путаницы с правами.
Создадим группу ftpusers и добавим пользователя ftpusers:
Далее добавим директорию и назначим права на нее для пользователя 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'.
Синтаксис команды следующий:
'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' будет рассмотрена чуть позже.
Таким образом, в простейшем случае добавление аккаунта осуществляется
следующим образом:
После этой команды вы получите запрос на ввод пароля для tester.
-----------------------------
Изменение параметров аккаунта
-----------------------------
Изменение параметров аккаунта также осуществляется с помощью pure-pw:
'pure-pw usermod login [-f passwd file] attr value [attr value ...] [-m]'
'attr value' в данном случае -- это те же параметры, которые используются
при добавлении нового аккаунта.
Не забывайте использовать параметр '-f passwd file' в том случае, если список
аккаунтов изначально создавался в файле, отличном от '/etc/pureftpd.passwd'.