×
Техническая документация: Хостинг

.ftpaccess - подробное описание

Управление правами доступа FTP-пользователей

На серверах виртуального хостинга в качестве FTP-сервера установлен ProFTPD.

Установлены основные модули:

  • mod_core.c
  • mod_xfer.c
  • mod_auth.c
  • mod_ls.c
  • mod_log.c
  • mod_site.c

Для изменения прав доступа к директориям вашей площадке для различных FTP-пользователей можно использовать конфигурационный файл .ftpaccess, структура и функциональность которого во многом похожа на конфигурационный файл Apache — .htaccess.

Область действия конфигурационных директив, отвечающих за права доступа, ограничена секцией Limit, при этом <Limit команда> определяет ограничения на использование объектов в директории (дополняет, но не заменяет права доступа файловой системы); в дополнение к командам протокола FTP можно использовать групповые имена:

  • READ — все FTP-команды, связанные с чтением файлов (за исключением команд выдачи листинга содержимого директории), (RETR, SITE, SIZE, STAT);
  • WRITE — все FTP-команды, связанные с созданием, записью или удалением файлов или директорий (APPE, DELE, MKD, RMD, RNTO, STOR, XMKD, XRMD);
  • DIRS — все FTP-команды, связанные с выдачей листинга содержимого директории (CDUP, CWD, LIST, MDTM, NLST, PWD, RNFR, XCUP, XCWD, XPWD);
  • ALL — все FTP-команды (включает в себя все три класса READ, WRITE и DIRS).

Блоки с групповыми именами имеют меньший приоритет; блок для внутренней области действия имеет больший приоритет, чем для внешней; при определении блока можно указывать несколько имен команд через пробел.

Управление доступом в области действия Limit

  • Allow from all | none | хост | сеть — разрешение на действие, определенное в директиве Limit, в зависимости от шаблона IP адреса или доменного имени; область действия — Limit; по умолчанию — from all;
  • AllowAll — явное разрешение доступа к области действия Limit, Anonymous или Directory.
  • AllowGroup список-групп-через-запятую — для доступа к командам, описанным в данной области действия Limit, пользователь должен входить во все упомянутые группы (AND, возможно отрицание, задаваемое восклицательным знаком перед именем группы). На виртуальном хостинге FTP-пользователи одной площадки относятся к группе uXXXX, где uXXXX – номер площадки.
  • AllowUser список-имен-через-запятую — для доступа к командам, описанным в данной области действия Limit, пользователь должен иметь указанные имена (AND, возможно отрицание, задаваемое восклицательным знаком перед именем).
  • Deny from all | none | хост | сеть — запрет на действие, определенное в директиве Limit, в зависимости от шаблона IP адреса или доменного имени; область действия — Limit; по умолчанию — from none.
  • DenyAll — синоним для команд «order deny,allow;deny from all».
  • DenyGroup список-групп-через-запятую — запрещен доступ к командам, описанным в данной области действия Limit, пользователям, входящим во все упомянутые группы (AND, возможно отрицание, задаваемое восклицательным знаком перед именем группы)
  • DenyUser список-имен-через-запятую запрещен доступ к командам, описанным в данной области действия Limit, для пользователей с указанным именем (AND, возможно отрицание, задаваемое восклицательным знаком перед именем).
  • Order allow,deny | deny,allow — определяет последовательность проверки директив Allow и Deny, а также действия по умолчанию; allow,deny: проверяются директивы Allow, если совпадение найдено, то доступ предоставляется, иначе проверяются директивы Deny и если совпадение найдено, то доступ запрещается, иначе доступ предоставляется; deny,allow: проверяются директивы Deny и если совпадение найдено, то доступ запрещается, иначе проверяются директивы Allow и если совпадение найдено, то доступ предоставляется, иначе доступ запрещается; заметьте, что в Apache по умолчанию производятся противоположные действия!

Рассмотрим несколько примеров настройки FTP-доступа при помощи .ftpaccess.

  1. Пусть есть два FTP-пользователя площадки: uXXXX (доступ ко всей площадке) и uXXXX_2 (доступ к директории только одного домена domain.tld). Нам надо ограничить доступ второму пользователю только на чтение. В этом случае содержание .ftpaccess таково:
    <Limit write>
    DenyUser uXXXX_2
    </Limit>
    
    Файл .ftpaccess следует поместить в директории domain.tld, его действие будет распространяться на все поддиректории. Кроме этого, для пользователя uXXXX_2 надо разрешить запись в директорию domain.tld/tmp, тогда в директории domain.tld/tmp надо поместить .ftpaccess противоположного содержания:
    <Limit write>
    AllowUser uXXXX_2
    </Limit>
    
  2. Пусть помимо основного есть два FTP-пользователя площадки: uXXXX_1 и uXXXX_2, где uXXXX – номер площадки. На площадке расположено 4 домена – domain1.tld, domain2.tld, domain3.tld, domain4.tld. Каждому FTP-пользователю нужен доступ только к двум доменам, остальные ему полностью недоступны (директории «запрещенных» доменов не видны). Тогда оба пользователя имеют доступ ко всей площадке, а в директории доменов создаем файлы .ftpaccess следующего содержания:
    <Limit ALL>
    AllowUser uXXXX_Y
    Deny All
    </Limit>
    где uXXXX_Y – имя того пользователя, которому разрешен доступ в текущую директорию.

Также важно отметить, что пользователь имеет доступ к просмотру и копированию файла .ftpaccess, но создать или удалить его не возможно. А после создания или изменения конфигурационного файла, ограничения начнут действовать только для новых FTP-сессий.

По теме FTP

настройка вебинтерфейс вирус диагностика директории дополн. FTP пароль .ftpaccess winscp