Альтернативой, и, на мой взгляд, достаточно хорошей, сервера wu-ftpd является сервер ProFTPD. Он намного проще в плане конфигурирования, чем сервер wu-ftpd, и обладает достаточно гибкими возможностями. Для его установки достаточно установить пакет proftpd. Подобно серверу wu-ftpd, ProFTPD может запускаться автоматически при запуске системы или вызываться суперсервером при наличии запроса на установку соединения. Первый режим называется standalone.
Сервер ProFTPD может вызываться с параметрами, указанными в табл. 11.4.
Параметры сервера ProFTPD Таблица 11.4
Параметр Описание -h Справочная информация -n Запускает сервер в автономном режиме. Для этого в файле конфигурации нужно указать режим запуска standalone (см. ниже) -d уровень_отладки Устанавливает уровень отладки сервера (1-5) -с файл_конфигурации Задает использование альтернативного файла конфигурации вместо стандартного /etc/proftpd.conf -p 0|1 Запрещает (0) или разрешает (1) использование постоянного пароля. Для получения более подробной информации (смотрите документацию по серверу) -I Выводит список всех модулей, откомпилированных для использования сервером ProFTPD -v Выводит версию
11.2.1. Файл /etc/proftpd.conf
Сервер ProFTPD использует всего один файл конфигурации. — /etc/proftpd.conf, который по своей структуре чем-то похож на файл конфигурации Web-сервера Apache (а именно — директивами конфигурирования).
В листинге 11.8 представлен простейший файл конфигурации сервера ProFTPD.
Листинг 11.8. Пример файла конфигурации /etc/proftpd.conf# Этот файл устанавливает один сервер и одну
# учетную запись
ServerName "My ProFTPD server"
ServerType standalone
DefaultServer on
# Используем стандартный порт
Port 21
Umask 022
MaxInstances 30
# Пользователь и группа, обслуживающие сервер
User nobody
Group nobody
# Параметры корневого каталога. Блочная директива Directory
# Директива, определяющая параметр AllowOverwrite
AllowOverwrite on
Директивы конфигурации делятся на две группы: директивы, определяющие некоторые параметры, и блочные директивы. Блочные директивы конфигурирования похожи на тэги языка HTML. С помощью блочных директив задаются блоки, содержащие директивы, которые определяют параметры (см. листинг 11.8). При этом используются начальные и конечные блочные директивы. Конечная директива имеет то же имя, что и начальная, но с наклонной чертой в начале. Например, начальная директива , а конечная — (см. листинг 11.8). Действия каждой пары директив распространяются только на блок, который они задают (который расположен между ними). Директива определяет свойства какого-нибудь каталога. В вышеприведенном листинге (листинг 11.8) определяются свойства корневого каталога.
В табл. 11.5 представлены все директивы файла конфигурации сервера ProFTPD.
Директивы файла конфигурации сервера ProFTPD Таблица 11.5
Директива Описание AccessGrantMsg сообщение Ответное сообщение, которое будет отправлено пользователю в случае его регистрации или получения анонимного доступа. Символы %u будут заменены на имя пользователя, которое он ввел при регистрации Allow from all|host|network [,host|network[,…]] Используется внутри блока Limit. Ограничивает доступ к серверу (а именно разрешает доступ). По умолчанию allow from all AllowAll Разрешает доступ к блокам Directory, Anonymous, Limit AllowForeignAddress on|off Разрешает клиенту указывать при соединении соединения адрес, который не соответствует ему. По умолчанию off. Может использоваться в блоках VirtualHost, Anonymous, AllowGroup список_групп Разрешает доступ определенным группам. Используется в блоке Limit AllowUser список_пользователей Разрешает доступ определенным пользователям. Используется в блоке Limit AnonRequirePassword on|off Требует пароль при анонимной регистрации. Пароль должен совпадать с паролем того пользователя, который запустил демон. По умолчанию данная опция выключена Создает анонимную учетную запись, directory — корневой каталог анонимного сервера AuthGroupFile путь Позволяет указать путь к альтернативному файлу group. По умолчанию используется файл /etc/group AuthUserFile путь Указывает альтернативный файл passwd Bind IP-адрес Разрешает привязку дополнительного IP-адреса к основному или виртуальному хосту DefaultRoot каталог Задает корневой каталог по умолчанию Deny from all|host|network Запрещает доступ к серверу. Используется в блоке Limit DenyAll Запрещает анонимным пользователям доступ к объектам, указанным в блоке Limit DenyUser список пользователей Запрещает доступ определенным пользователям путь Используется в VirtualHost, Anonymous для того, чтобы определить особенные параметры доступа к каталогу и его подкаталогам DisplayFirstChdir файл_сообщения Указанный текстовый файл будет выводиться, когда пользователь впервые за время сеанса войдет в данный каталог. Используется в VirtualHost, Directory, Anonymous DisplayLogin файл_сообщения Этот файл будет отображен, когда пользователь зарегистрируется Используется для задания параметров, которые будут использоваться как основным, так и всеми виртуальными серверами Ограничение на выполнение данной FTP-команды, например, LOGIN, WRITE, READ, STOR MaxClients number|none сообщение Ограничение на количество клиентов. Приведенное сообщение будет отображено, если пользователю будет отказано в доступе. Блоки Anonymous, Global MaxLoginAttempts Максимальное количество попыток зарегистрироваться. По умолчанию 3. Блоки VirtualHost, Global Order allow,deny|deny,allow Порядок выполнения директив Allow и Deny в блоке Limit PersistentPassword on|off При значении on будут использованы системные файлы /etc/passwd и /etc/group, несмотря на то, что командой enroot корневой каталог был изменен RequireValidShell on|off Разрешает или запрещает регистрацию при использовании оболочек (shells), которые не указаны в файле /etc/shells ServerAdmin email Определяет email администратора сервера ServerType Определяет режим работы сервера standalone (по умолчанию) или inetd. В первом случае сервер будет запускаться автоматически из стартовых сценариев системы, во втором — его будет запускать сервер inetd при попытке соединения TimeoutIdle секунды Время в секундах, в течение которого пользователь имеет право не проявить активности. По умолчанию 60 (1 минута) Umask маска Определяет права доступа для созданного файла. Маска — число в восьмеричной системе, определяющее набор прав доступа (см. главу 4) User имя пользователя Имя пользователя, присвоенное демону ProFTP UserAlias псевдоним пользователь Создает указанный псевдоним для указанного пользователя Создает виртуальный сервер
11.2.2. Ограничение доступа
Я считаю необходимым подробно рассмотреть блочную директиву Limit. Эта директива определяет вид и параметры доступа к тому или иному каталогу. Рассмотрим листинг 11.9.
Листинг 11.9. Пример использования директивы Limit
AllowAll
DenyAll
Директива Directory определяет свойства каталога incoming, а директива Limit задает вид доступа к этому каталогу. Команда WRITE директивы Limit вместе с директивой AllowAll разрешает всем пользователям записывать информацию в этот каталог. Команда READ директивы Limit задает ограничение на чтение этого каталога. В рассматриваемом случае чтение запрещено для всех пользователей. Кроме команд WRITE и READ в директиве Limit можно задавать команды STOR и LOGIN (см. табл. 11.6).
В блоке Limit можно задавать директивы Allow, AllowAll, AllowGroup, AllowUser, Deny, DenyAll, DenyUser (см. табл. 11.5). Например, в листинге 11.10 запрещается доступ всем пользователям, кроме den. Пользователь den может регистрироваться со всех компьютеров, кроме компьютера с IP-адресом 111.111.111.111. Также запрещена регистрация из сети 192.168.2.0
Команды директивы Limit, ограничивающие права доступа Таблица 11.6
Команда Описание LOGIN Ограничивает регистрацию WRITE Ограничивает запись READ Ограничивает чтение STOR Ограничивает прием файлов
Листинг 11.10. Пример блока Limit
DenyAll
AllowUser den
Deny from 111.111.111.111
Deny from 192.168.2.
11.2.3. Файл .ftpaccess
Для конфигурирования отдельного каталога может также использоваться файл .ftpaccess, который расположен в этом каталоге. В нем содержатся такие же директивы, что и в файле proftpd.conf, но файл .ftpaccess имеет приоритет перед файлом proftpd.conf.
11.3. Организация анонимного FТР-сервера