Linux-сервер своими руками
Шрифт:
Директивы конфигурации делятся на две группы: директивы, определяющие некоторые параметры, и блочные директивы. Блочные директивы конфигурирования похожи на тэги языка HTML. С помощью блочных директив задаются блоки, содержащие директивы, которые определяют параметры (см. листинг 11.8). При этом используются начальные и конечные блочные директивы. Конечная директива имеет то же имя, что и начальная, но с наклонной чертой в начале. Например, начальная директива <Directory /*>, а конечная — </Directory> (см. листинг 11.8). Действия каждой пары директив распространяются только на блок, который они задают (который расположен между ними). Директива <Directory> определяет свойства какого-нибудь каталога. В вышеприведенном листинге (листинг 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, <Global> |
AllowGroup список_групп | Разрешает доступ определенным группам. Используется в блоке Limit |
AllowUser список_пользователей | Разрешает доступ определенным пользователям. Используется в блоке Limit |
AnonRequirePassword on|off | Требует пароль при анонимной регистрации. Пароль должен совпадать с паролем того пользователя, который запустил демон. По умолчанию данная опция выключена |
<Anonymous directory> | Создает анонимную учетную запись, directory — корневой каталог анонимного сервера |
AuthGroupFile путь | Позволяет указать путь к альтернативному файлу group. По умолчанию используется файл /etc/group |
AuthUserFile путь | Указывает альтернативный файл passwd |
Bind IP-адрес | Разрешает привязку дополнительного IP-адреса к основному или виртуальному хосту |
DefaultRoot каталог | Задает корневой каталог по умолчанию |
Deny from all|host|network | Запрещает доступ к серверу. Используется в блоке Limit |
DenyAll | Запрещает анонимным пользователям доступ к объектам, указанным в блоке Limit |
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, несмотря на то, что командой enroot корневой каталог был изменен |
RequireValidShell on|off | Разрешает или запрещает регистрацию при использовании оболочек (shells), которые не указаны в файле /etc/shells |
ServerAdmin email | Определяет email администратора сервера |
ServerType | Определяет режим работы сервера standalone (по умолчанию) или inetd. В первом случае сервер будет запускаться автоматически из стартовых сценариев системы, во втором — его будет запускать сервер inetd при попытке соединения |
TimeoutIdle секунды | Время в секундах, в течение которого пользователь имеет право не проявить активности. По умолчанию 60 (1 минута) |
Umask маска | Определяет
|
User имя пользователя | Имя пользователя, присвоенное демону ProFTP |
UserAlias псевдоним пользователь | Создает указанный псевдоним для указанного пользователя |
<VirtualHost address> | Создает виртуальный сервер |
11.2.2. Ограничение доступа
Я считаю необходимым подробно рассмотреть блочную директиву Limit. Эта директива определяет вид и параметры доступа к тому или иному каталогу. Рассмотрим листинг 11.9.
Директива 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.2.3. Файл .ftpaccess
Для конфигурирования отдельного каталога может также использоваться файл .ftpaccess, который расположен в этом каталоге. В нем содержатся такие же директивы, что и в файле proftpd.conf, но файл .ftpaccess имеет приоритет перед файлом proftpd.conf.
11.3. Организация анонимного FТР-сервера
Анонимный FTP-сервер можно построить с помощью wu-ftpd, установив пакет anonftp. Этот пакет нельзя использовать вместе с сервером ProFTPD. Пакет anonoftp поставляется в составе большинства дистрибутивов.
Сейчас рассмотрим, как организовать анонимный FTP-сервер с помощью сервера ProFTPD. Для организации анонимного доступа сервер ProFTPD имеет директиву Anonymous. При этом в блок Anonymous нужно поместить директивы, конфигурирующие анонимную службу. В самой же директиве Anonymous необходимо указать каталог, который будет использоваться в качестве корневого для анонимной службы. Сервер ProFTPD выполнит для этого каталога команду enroot, превращая этот каталог в корневой для удаленного пользователя. Перед тем, как сделать это, сервер ProFTPD прочитает все необходимые ему файлы конфигурации из реального каталога /etc.
При анонимной регистрации, по умолчанию в качестве имени пользователя указывается anonymous, а вместо пароля — адрес электронной почты пользователя. Вы же можете изменить параметры анонимного доступа, добавив проверку пароля для анонимного пользователя с помощью директивы AnonRequirePassword (см. табл 11.5). В следующем примере представлен типичный блок Anonymous, подходящий для большинства анонимных серверов (см. листинг 11.11.)
Директивы User и Group задают имя пользователя для анонимного доступа. В обоих случаях применяется имя ftp. Для имени ftp определяется псевдоним anonymous. Вместо пароля нужно указать адрес электронной почты.
Директива RequireValidShell отключает проверку командного интерпретатора пользователя. По умолчанию сервер ProFTPD ищет список допустимых интерпретаторов в файле /etc/shells. Если используемый пользователем интерпретатор не указан в файле /etc/shells, то соединение будет разорвано. Директива RequireValidShell off отключает такую проверку.