Pure ftpd ubuntu настройка
Установка рассматривается для 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 - позволяет установить квоту дискового пространства для пользователя;
Если программа устанавливается из репозитария, достаточно команды
В Ubuntu 7.04 сервер pure-ftpd собран с поддержкой puredb .
Перед началом настройки сервера рекомендуется завести системный аккаунт,
которому будут принадлежать все директории виртуальных пользователей, чтобы в
дальнейшем избежать путаницы с правами.
Создадим группу ftpusers и добавим пользователя ftpusers:
useradd -g ftpusers -d /home/ftpusers -s /sbin/nologin ftpusers
pw groupadd ftpusers
pw useradd ftpusers -g ftpusers -d /home/ftpusers -s /sbin/nologin
Далее добавим директорию и назначим права на нее для пользователя 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.
Создание файла аккаунтов
Каждая запись файла виртуальных аккаунтов имеет следующий формат:
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]
Рассмотрим значения используемых опций:
- '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' будет рассмотрена чуть позже.
Таким образом, в простейшем случае добавление аккаунта осуществляется
После этой команды вы получите запрос на ввод пароля для tester.
Изменение параметров аккаунта
Изменение параметров аккаунта также осуществляется с помощью pure-pw:
'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 ''' -- сброс ограничений на количество подключений.
Удаление аккаунта осуществляется следующим образом:
Изменение пароля осуществляется следующим образом:
После добавления (удаления, модификации) данных аккаунта изменения не вступят в силу, пока не будет обновлен файл '/etc/pure-ftpd/pureftpd.pdb'.
Для создание нового файла 'pureftpd.pdb', используйте следующую команду:
В том случае, если вы используете имена файлов, отличныные от '/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' в командах модификации, например:
Таким образом изменения сразу же будут внесены в файл 'pureftpd.pdb'.
Получение информации об аккаунтах
Для просмотра данных аккаунта используется следующий синтаксис 'pure-pw':
Сервер можно просто запустить как демон. Чтобы работали настроенные через pure-pw аккаунты, сервер должен запускаться со стандартными опциями, и с указанием файла с данными авторизации пользователей с помощью опции '-l':
После запуска нужно проверить, запустился ли сервер. Для этого можно дать команды
- покажет, появился ли процесс
- покажет, какая программа (демон) слушает 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 этот демон называется
и его работа управляется через файл /etc/inetd.conf. Если в системе есть демон inetutils-inetd , то можно поступить двумя способами.
1. Неправильный , но для проверки работоспособности pure-ftpd сгодится. Можно закомментировать в файле /etc/inetd.conf строку, отвечающую за ftp-протокол. Затем уничтожить процесс inetutils-inetd , и снова его запустить командой
После этого командой netstat -lnp | grep 21 удостоверится, что порт 21 не занят, и запустить pure-ftpd как демона (должна присутсвовать опция B ).
2. Правильный . Если в системе уже есть inetutils-inetd , то его надо настроить так, чтобы при входящем соединении на порт 21, он вызывал запуск pure-ftpd .
Этот документ описывает, как установить сервер PureFTPd, работающий с виртуальными пользователями из базы MySQL вместо реальных системных пользователей. Это удобнее и позволяет поддерживать тысячи ftp-пользователей на одной машине. Кроме того, я продемонстрирую использование квот и ограничений скорости загрузки/выгрузки. Пароли в базе данных будут храниться в зашифрованном виде как MD5-строки.
Для управления базой данных MySQL вы можете использовать инструменты с веб-интерфейсом, наподобие phpMyAdmin, который мы тоже установим. phpMyAdmin - это удобный графический интерфейс, избавляющий вас от возни с командной строкой.
Данную статью следует рассматривать как практическое руководство; она не затрагивает теоретические основы - им в Сети посвящено множество документов.
Эта статья не подразумевает никаких гарантий! Я имею в виду, что не существует единственно возможного способа решения поставленной задачи. Существует множество путей достижения цели, и здесь просто описан тот путь, который выбрал я. И я не гарантирую, что он подойдёт и вам.
1. Предварительные замечания
Убедитесь, что вы вошли в систему как root (набрав sudo su ), потому что все шаги этого руководства вам нужно будет выполнять с правами суперпользователя. Также, если вы хотите использовать текстовый редактор vi (что и подразумевается в этой статье), рекомендую вам запустить apt-get install vim-nox . Пакет vim-nox даёт вам гарантию, что редактор vi будет вести себя так, как ожидается (без vim-nox вы можете столкнуться с некоторыми странностями).
2. Установка MySQL и phpMyAdmin
Это можно выполнить одной-единственной командой:
- New password for the MySQL "root" user (пароль MySQL-пользователя "root"): <-- yourrootsqlpassword
- Repeat password for the MySQL "root" user (ещё раз этот пароль): <-- yourrootsqlpassword
- Web server to reconfigure automatically (какой веб-сервер настраивать): <-- apache2
3. Установка PureFTPd с поддержкой MySQL
Для Ubuntu 8.10 существует предварительно настроенный пакет pure-ftpd-mysql. Его и установим:
Теперь нужно создать группу и пользователя ftp ( ftpgroup и ftpuser соответственно), на которых будут отображаться все наши виртуальные пользователи. Замените идентификаторы группы и пользователя (groupid и userid, в нашем примере - 2001 ) тем значением, которое свободно в вашей системе:
4. Создание базы данных MySQL для PureFTPd
Теперь мы создадим БД с именем pureftpd и MySQL-пользователя pureftpd , с именем которого демон PureFTPd будет в дальнейшем подключаться к базе:
Замените строку ftpdpass тем паролем, который вы хотите задать MySQL-пользователю pureftpd. Находясь в интерактивной оболочке MySQL, создадим также нужную нам таблицу (да-да, нам нужна только одна таблица!):
Обратите внимание, что командой quit; мы завершили работу в оболочке MySQL и вернулись в командную оболочку Linux.
5. Настройка PureFTPd
Отредактируйте файл /etc/pure-ftpd/db/mysql.conf . Он должен выглядеть следующим образом:
Убедитесь, что в строке MYSQLPassword вы заменили ftpdpass правильным паролем MySQL-пользователя pureftpd! Также обратите внимание, что мы в качестве метода MYSQLCrypt используем md5 , благодаря чему пользовательские пароли будут храниться в базе данных как MD5-строки, что намного безопаснее, чем использование открытых паролей!
Затем создайте файл /etc/pure-ftpd/conf/ChrootEveryone , содержащий единственную строку yes :
Благодаря этому PureFTPd будет "запирать" каждого виртуального пользователя в его домашнем каталоге, так что он не сможет просматривать каталоги и файлы за пределами своего каталога.
Создайте ещё один файл, /etc/pure-ftpd/conf/CreateHomeDir , также с единственной строкой yes :
Теперь PureFTPd при подключении пользователя будет создавать его домашний каталог, если он ещё не существует.
После всех этих действий, перезагрузите PureFTPd:
6. Заполнение базы данных и тестирование
Для внесения записей в базу данных можно воспользоваться оболочкой MySQL:
Если вы смогли подключиться - принимайте поздравления! Если нет, значит, что-то вы сделали неправильно; ищите ошибку.
7. Администрирование
В любом случае, если вы хотите создать нового пользователя, вам нужно будет добавить запись в таблицу ftpd , поэтому сейчас я объясню назначение столбцов этой таблицы:
8. Анонимный доступ
Если вы хотите создать анонимную учётную запись ftp (под которой каждый сможет подключаться к серверу без пароля), вам нужно выполнить следующее.
Прежде всего, создайте системного пользователя ftp (с домашним каталогом /home/ftp ) и группу ftp :
Затем создайте файл /etc/pure-ftpd/conf/NoAnonymous , содержащий строку no :
При такой настройке PureFTPd будет разрешать анонимные подключения.
Теперь мы создадим каталог /home/ftp/incoming , в который разрешим анонимным пользователям загружать файлы. Этому каталогу мы зададим права 311 ( d-wx--x--x ), чтобы пользователи могли записывать туда файлы, но не могли их просматривать или скачивать. Каталог /home/ftp будет иметь права 555 ( dr-xr-xr-x ), чтобы можно было просматривать его содержимое и скачивать файлы:
Теперь анонимные пользователи смогут заходить на сервер, скачивать файлы из /home/ftp , но загружать только в /home/ftp/incoming (и как только файл будет загружен в каталог incoming , его нельзя будет скачать оттуда; чтобы файл стал доступен для пользователей, администратор сервера должен перенести его в /home/ftp ).
Читайте также: