должно быть передано 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.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, представленной по адресу 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
. В качестве значения данной директивы также могут быть указаны специальные идентификаторы, обозначающие