Linux: Полное руководство
Шрифт:
15.2. Сервер ProFTP
15.2.1. Установка и запуск ProFTPD
Альтернативой, и, на мой взгляд, достаточно хорошей, серверу wu-ftpd является сервер ProFTPD. Он намного проще в конфигурировании, чем сервер wu-ftpd, и обладает достаточно гибкими возможностями. Для его установки достаточно установить пакет proftpd. Подобно серверу wu-ftpd, ProFTPD может запускаться автоматически при запуске системы или вызываться суперсервером при наличии запроса на установку соединения. Сервер ProFTPD может вызываться с ключами, указанными в табл. 15.4.
Параметры сервера ProFTPD Таблица 15.4
Ключ | Назначение |
---|---|
– h | Справочная информация |
– n | Запускает сервер в автономном режиме. Для этого в файле конфигурации нужно указать режим запуска standalone |
– d
| Устанавливает уровень отладки сервера (1-5) |
– с файл_конфигурации | Задает использование альтернативного файла конфигурации вместо стандартного /etc/proftpd.conf |
– p 0 | 1 | Запрещает (0) или разрешает (1) использование постоянного пароля. Для получения более подробной информации смотрите документацию по серверу |
– l | Выводит список всех модулей, откомпилированных для использования сервером ProFTPD |
– v | Выводит версию |
15.2.2. Настройка ProFTPD. Файл /etc/proftpd.conf
Сервер ProFTPD использует всего один файл конфигурации —
В листинге 15.7 представлен простейший файл конфигурации сервера ProFTPD.
Листинг 15.7. Пример файла конфигурации /etc/proftpd.conf
Директивы конфигурации делятся на две группы: директивы, определяющие параметры, и блочные директивы. Блочные директивы конфигурирования похожи на тэги языка HTML: конечная директива имеет то же имя, что и начальная, но с наклонной чертой в начале. Например, начальная директива <Directory /*>, а конечная — </Directory > (листинг 15.7).
Действия каждой пары директив распространяются только на блок, расположенный между ними. Директива <Directory> определяет свойства какого-нибудь каталога. В вышеприведенном листинге определяются свойства корневого каталога.
В таблице 15.5 представлены все директивы файла конфигурации сервера ProFTPD.
Директивы файла конфигурации сервера ProFTPD Таблица 15.5
Директива | Описание |
---|---|
AccessGrantMsg сообщение | Ответное сообщение, которое будет отправлено пользователю в случав его регистрации или получения анонимного доступа. Символы %u будут заменены на имя пользователя которое он ввел при регистрации |
Allow from all | host | network [,host | network[, …]] | Используется внутри блока Limit. Ограничивает доступ к серверу (а именно, разрешает доступ). По умолчанию allow from all |
AllowAll | Разрешает доступ к блокам Directory, Anonymous, Limit |
AllowForeignAddress on | off | Разрешает клиенту указывать при установке соединения адрес, который не соответствует ему. По умолчанию off. Может использоваться в блоках VirtualHost, Anonymous, <Global> |
AllowGroup список_групп | Разрешает доступ определенным группам. Используется в блоке Limit |
AltowUser список_пользователей | Разрешает доступ определенным пользователям. Используется в блоке Limit |
AnonRequirePassword on | off | Требует пароль при анонимной регистрации. Пароль должен совпадать с паролем того пользователя, который запустил демон. По умолчанию данная опция выключена |
<Anonymous directory> | Создает анонимную учетную запись, directory — корневой каталог анонимного сервера |
AuthGroupFile путь | Позволяет указать путь к альтернативному файлу group. По умолчанию используется файл /etc/group |
AuthUserFile путь | Указывает альтернативный файл passwd |
Bind ip-адрес | Разрешает привязку дополнительного IP-адреса к основному или виртуальному хосту |
DefaultRoot каталог | Задает корневой каталог по умолчанию |
Deny from all | host | network | Запрещает доступ к серверу. Используется в блоке Limit |
DenyAll | Запрещает
|
DenyUser список_пользователей | Запрещает доступ определенным пользователям |
<Directory> путь | Используется в VirtualHost, Anonymous для того, чтобы определить особенные параметры доступа к каталогу и его подкаталогам |
DisplayFirstChdir файл_сообщения | Указанный текстовый файл будет выводиться, когда пользователь впервые за время сеанса войдет в данный каталог. Используется в VirtualHost, Directory, Anonymous |
DisplayLogin файл_сообщения | Этот файл будет отображен, когда пользователь зарегистрируется |
<Global> | Используется для задания параметров, которые будут использоваться как основным, так и всеми виртуальными серверами |
<Limit command> | Ограничение на выполнение данной 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, несмотря на то, что командой chroot корневой каталог был изменен |
RequireValidShell on | off | Разрешает или запрещает регистрацию при использовании оболочек (shells), которые не указаны в файле /etc/shells |
ServerAdmin email | Определяет email администратора сервера |
ServerType | Определяет режим работы сервера standalone (по умолчанию) или inetd. В первом случае сервер будет запускаться автоматически из стартовых сценариев системы, во втором — его будет запускать сервер inetd при попытке соединения |
TimeoutIdle секунды | Время в секундах, в течение которого пользователь имеет право не проявить активности. По умолчанию 60 (1 минута) |
Umask маска | Определяет права доступа для созданного файла. Маска — число в восьмеричной системе, определяющее набор прав доступа (см. главу 2) |
User имя пользователя | Имя пользователя, присвоенное демону ProFTP |
UserAlias псевдоним пользователь | Создает указанный псевдоним для указанного пользователя |
<Virtual Host address> | Создает виртуальный сервер |
15.2.3. Разграничение доступа к серверу ProFTP
Я считаю необходимым подробно рассмотреть блочную директиву Limit. Эта директива определяет вид и параметры доступа к тому или иному каталогу. Рассмотрим листинг 15.8.
Листинг 15.8. Пример использования директивы Limit
Директива Directory определяет свойства каталога
Кроме команд WRITE и READ, в директиве Limit можно задавать команды STOR и LOGIN (таблица 15.6).
Команды директивы Limit, ограничивающие права доступа Таблица 15.6
Команда | Назначение |
---|---|
LOGIN | Ограничивает регистрацию |
WRITE | Ограничивает запись |
HEAD | Ограничивает чтение |
STOR | Ограничивает прием файлов |
В блоке Limit можно задавать директивы Allow, AllowAll, AllowGroup, AllowUser, Deny, DenyAll, DenyUser. Например, в листинге 15.9 запрещается доступ всем пользователям, кроме den. Пользователь den может регистрироваться со всех компьютеров, кроме компьютера с IP-адресом 111.111.111.111. Также запрещена регистрация из сети 192.168.2.0
Листинг 15.9. Пример блока Limit