В сервере 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
, но оно никак не изменяет действия, выполняемые данной директивой.
Совет
Вместо имен узлов и доменов рекомендуется использовать блоки IP-адресов. Это уменьшает зависимость FTP-сервера от работы DNS-сервера.
•
AllowAll
. По умолчанию ProFTPd разрешает доступ к каталогам, но существуют различные способы ограничить доступ. Поместив директиву
AllowAll
в состав блока
<Directory>
,
<Limit>
или
<Anonymous>
, вы можете восстановить соглашения, принятые по умолчанию.
•
AllowGroup список_групп
. Данная опция разрешает доступ для пользователей, которым в блоке
<Limit>
запрещено обращаться к ресурсу. В качестве значения этой опции указываются имена групп, разделенные запятыми. Чтобы получить доступ к ресурсу, пользователь должен принадлежать всем указанным группам. Если имени группы предшествует символ учитываются лишь пользователи, не принадлежащие данной группе. Эта опция чаще всего используется для того, чтобы отменить для некоторых пользователей ограничения, наложенные такими опциями, как
DenyAll
.
•
AllowOverwrite [on|off]
. Эта опция определяет, может ли пользователь заменять файлы на сервере. По умолчанию принимается значение которое запрещает замену файлов.
•
AllowUser список_пользователей
. Директива
AllowUser
предоставляет пользователю или группе пользователей доступ к ресурсу, закрытому для остальных. Если имени пользователя предшествует символ
!
, право доступа получают все пользователи, кроме указанного.
•
DefaultRoot имя_каталога [список_групп]
. С помощью данной опции вы можете ограничить сферу деятельности пользователей подкаталогами определенного каталога. Для этого надо указать в качестве значения имя соответствующего каталога. Имя каталога может начинаться с символа
/
, в этом случае предполагается абсолютное имя. Символ
~
определяет рабочий каталог пользователя. Если директива
DefaultRoot
должна иметь отношение лишь к некоторым из пользователей, надо указать их в списке групп. Список групп составляется по тем же правилам, что и для директивы