Родерик Смит - Сетевые средства Linux
Опцию noretrieve часто используют для того, чтобы запретить доступ к /etc/passwd, /etc/shadow, /etc/ftpaccess, файлу core (находящемуся в любом каталоге) и другим важным файлам.
• allowretrieve [relative|absolute] [class=имя_класса] имена_файлов. Данная опция выполняет действия, противоположные опции noretrieve. С ее помощью определяются исключения из правила, заданного посредством noretrieve. Синтаксис данной опции полностью совпадает с синтаксисом noretrieve.
• message имя_файла [событие] [класс]. Опция message задает файл, содержимое которого должно быть передано FTP-клиенту при наступлении некоторого события. Так, например, если в качестве события указано ключевое слово login, сообщение будет отображаться при регистрации пользователя. Если событие описано как cwd=каталог, то сообщение будет передано при выборе этого каталога в качестве текущего. При необходимости вы можете ограничить действия данной опции определенным классом пользователей. Например, если задана опция message .message cwd=*, то при переходе в любой каталог пользователю будет передано сообщение из файла .message, содержащегося в этом каталоге. Таким образом, вы можете предоставлять пользователям описание содержимого каталогов и сообщать о назначении всего FTP-сервера.
• compress [yes|no] класс [,класс]. Данная опция разрешает сжатие данных. Если пользователь запрашивает один из существующих файлов, но указывает дополнительное расширение, означающее сжатие, этот файл будет передан в сжатом виде. (Например, для получения файла с именем file пользователь может указать имя file.gz.) Расширения, означающие сжатие, приведены в файле ftpconversions.
• chmod, delete, overwrite, rename и umask. Эти опции принимают значение yes или no, кроме того, в них указывается такой же список типов, как и в определении класса. Каждая из этих опций разрешает или запрещает использование клиентом соответствующей команды. Например, запись delete no guest, anonymous запрещает пользователям типа guest и anonymous удалять файлы.
• tar [yes|no] класс[, класс]. Эта опция действует подобно опции compress, но применяется для объединения содержимого каталога в tar-архив. Данная опция предоставляет удобные средства для копирования каталогов.
• dns refuse_mismatch имя_файла. Данная опция сообщает серверу WU-FTPD о том, что тот должен выполнить обратное преобразование IP-адреса клиента, а затем осуществить прямое DNS-преобразование. Если адрес, полученный в результате прямого преобразования, не соответствует адресу клиента, соединение должно быть разорвано. Однако перед разрывом соединения сервер передает клиенту содержимое указанного файла.
• dns refuse_no_reverse имя_файла. Данная опция указывает на то, что если выполнить обратное DNS-преобразование не удается, сервер не должен продолжать взаимодействие с клиентом. Перед завершением работы клиенту передается содержимое указанного файла.
Здесь приведены лишь некоторые из опций WU-FTPD. Дополнительную информацию о настройке данного сервера можно получить, обратившись к страницам справочной системы, посвященным ftpaccess. Далее в этой главе будут также рассмотрены опции, применяемые для организации работы анонимного FTP-сервера.
Настройка ProFTPd
При создании конфигурационных файлов ProFTPd разработчики ориентировались на соответствующие средства сервера Apache, поэтому, если вам приходилось настраивать Apache, многие опции ProFTPd будут знакомы вам.
Конфигурационные файлы ProFTPdГлавный конфигурационный файл ProFTPd называется proftpd.conf; как правило, он располагается в каталоге /etc. В этом файле содержится большинство опций, используемых для настройки ProFTPd. Строки, содержащие комментарии, начинаются с символа #. Остальные записи представляются в следующем формате:
Директива [Значение]
Существуют директивы, для которых может быть задано несколько значений. Некоторые директивы формируют блок, включающий другие опции. Эти директивы помещаются в угловые скобки. Признаком окончания блока является директива, перед именем которой указан символ /. Пример блока, сформированного с помощью директивы Limit, приведен ниже.
<Limit WRITE>
DenyAll
Allow from 172.21.33.
</Limit>
Помимо главного конфигурационного файла, для настройки ProFTPd используется также файл ftpusers. Этот файл выполняет те же функции, что и одноименный файл сервера WU-FTPD. Пользователям, указанным в этом файле, запрещена регистрация на FTP-сервере. (Строго говоря, ProFTPd применяет для аутентификации модули РАМ, которые, в свою очередь, используют файл ftpusers.) По умолчанию при инсталляции ProFTPd создается файл ftpusers, в котором указываются такие имена пользователей, как nobody, daemon и root. Вы можете включить в данный файл учетные записи, созданные вами для специальных целей и не предполагающие регистрацию пользователей. Кроме того, в файле ftpusers можно задать имена обычных пользователей, которым по каким-либо причинам следует запретить доступ к FTP-серверу.
Опции общего назначения для сервера ProFTPdВ сервере ProFTPd предусмотрено большое количество директив, используемых для настройки этого сервера. Подробную информацию о них вы можете получить из документации на ProFTPd, представленной по адресу http://www.proftpd.org/docs/. Вероятнее всего, что, настраивая сервер, вы примете для большинства директив значения по умолчанию.
Поскольку значения многих директив применяются только в пределах контекстного блока, вам, прежде всего, надо составить представление о директивах, используемых для определения контекстных блоков. Эти директивы перечислены ниже.
• <Anonymous имя_каталога>. С помощью данной директивы вы можете создать анонимный FTP-сервер. В блоке, созданной посредством этой директивы, задаются другие директивы, используемые для обеспечения анонимного FTP-доступа. Анонимным пользователям разрешен доступ только к файлам, содержащимся в определенном каталоге, имя которого задается в качестве значения данной опции. Этот каталог ProFTPd указывает в качестве корневого каталога поддерева chroot (использование системной функции chroot() рассматривается в главе 23).
• <Directory имя_каталога>. С помощью данной директивы указывается каталог, к которому применяются другие директивы. Значением директивы является абсолютное имя каталога, начинающееся с символа /. Конфигурационный файл ProFTPd, создаваемый по умолчанию, обычно содержит блок, сформированный посредством директивы <Directory /*>. В этот блок помещаются директивы, с помощью которых задаются характеристики всех каталогов.
• <Global>. Директива <Global> формирует блок, содержимое которого применяется ко всему серверу и всем виртуальным узлам, формируемым посредством <VirtualHost>.
• <Limit группа_команд>. Данная опция задает набор команд FTP-клиента, действия которых ограничены директивами, содержащимися в составе блока. В группу команд входят одна или несколько команд из следующего набора: CWD, CDUP, MKD, RNFR, RNTO, DELE, RMD, RETR и STOR. В качестве значения данной директивы также могут быть указаны специальные идентификаторы, обозначающие категории команд. К ним относятся READ (все команды чтения), WRITE (все команды записи), DIRS (все команды для работы с каталогами) и ALL (все команды). Кроме того, для введения ограничений при регистрации вы можете использовать идентификатор LOGIN.
• <VirtualHost адрес>. ProFTPd позволяет поставить использование директив в зависимость от адреса клиента. В качестве значения данной директивы указывается IP-адрес или имя узла, и при обработке запроса с этого адреса применяются директивы, содержащиеся в блоке.
Большинство директив может присутствовать в одном или нескольких блоках. Кроме того, ряд директив указывается за пределами всех блоков; они рассматриваются как глобальные опции. Некоторые директивы могут встречаться как за пределами, так и в составе блока. Возможно также присутствие директивы в двух блоках, один из которого входит в состав другого. В этом случае директива с наибольшей степенью вложенности имеет наивысший приоритет. При настройке FTP-сервера чаще всего приходится изменять значения приведенных ниже директив.
• Allow [from] идентификаторы_узлов. Данная директива используется в составе блока <Limit> и указывает, какие клиенты имеют право доступа к ресурсу. В качестве идентификаторов узлов задается список IP-адресов, имен узлов, имен доменов (имя домена должно начинаться с точки) или блоков IP-адресов. Пункты списка отделяются друг от друга запятыми. Для идентификации узлов сети могут также использоваться ключевые слова all и none. После Allow может стоять ключевое слово from, но оно никак не изменяет действия, выполняемые данной директивой.