Здесь приведен перевод английской справки man ftpd от FreeBSD 6.2.
ftpd [-468ADdEhMmOoRrSUvW] [-l [-l]] [-a address] [-P port] [-p file] [-T maxtimeout] [-t timeout] [-u umask]
ОПИСАНИЕ Утилита ftpd является процессом сервера Internet File Transfer Protocol. Сервер использует протокол TCP и слушает порт, указанный в опции -P или указанный с спецификации сервиса ``ftp''; см. services(5).
Доступные опции:
-4 Когда указана опция -D, принимать соединения через сокет AF_INET.
-6 Когда указана опция -D, принимать соединения через сокет AF_INET6.
-8 Разрешить прозрачный режим UTF-8. Клиенты, совместимые со стандартом RFC 2640 оповещаются об использовании сервером символов в кодировке UTF-8. Эта опция не включает любые перекодировки имен файлов сервера; это работает для имен файлов сервера, закодированных в UTF-8. При выкачке (upload) файлов на FTP включается для клиентов, совместимых с RFC 2640, перекодировка из локальной кодировки клиента в UTF-8. FTP команды и собственные сообщения ftpd в любом случае кодируются в ASCII, который является подмножеством UTF-8. Следовательно, здесь не нужна перекодировка на сервере.
-A Разрешается только анонимный доступ к ftp.
-a Когда указана опция -D, соединения принимаются только от указанного адреса.
-D Когда указана эта опция, ftpd отсоединяется от консоли и становится демоном, принимающим соединения через порт FTP и порождающим (forking) дочерние процессы для поддержки запросов. Это обеспечивает меньшие траты ресурсов в сравнении с запуском ftpd через inetd(8) и полезно для применения на нагруженных серверах для уменьшения нагрузки.
-d Отладочная информация будет записываться в лог с изпользованием LOG_FTP.
-E Запретить команду EPSV. Это хорошо применять для серверов за файерволом.
-h Запрет вывода в сообщениях сервера информации, специфичной для хоста, такой как версия ПО сервера или имя хоста.
-l Каждая успешная и ошибочная ftp(1) сессия записывается через syslog LOG_FTP. Если эта опция указана дважды, то записываются команды retrieve (get), store (put), append, delete, make directory, remove directory и операции rename вместе с именами файлов и аргументами. По умолчанию, syslogd(8) записывает эти сообщения в /var/log/xferlog.
-M Предотвращает создание анонимными (anonymous) пользователями директорий.
-m Разрешает анонимным пользователям перезаписывать или модифицировать существующие файлы, если это разрешено правами файловой системы. По умолчанию anonymous не может модифицировать существующие файлы; в частности, файлы для выгрузки на сервер (upload) должны создаваться с уникальными именами.
-O Переводит сервер а режим write-only только для anonymous. Команда RETR запрещена для anonymous, что предотвращает анонимные загрузки (downloads) с сервера. Не дает эффекта, если также указана опция -o.
-o Переводит сервер а режим write-only. Команда RETR запрещена для всех, что предотвращает загрузку информации с сервера.
-P Когда указана опция -D, принимает соединения на указанном порту, указанном как числовая величина или имя сервиса, вместо порта ``ftp'' по умолчанию.
-p Когда указана опция -D, записывает файл process ID в указанный файл вместо pid-файла по умолчанию /var/run/ftpd.pid.
-R Когда указана эта опция, ftpd возвращается к историческому поведению по отношения к проверкам безопасности операций пользователей и ограничениям по запросам PORT. В настоящий момент ftpd поддерживает только команды PORT, направленные на непривилегированные порты для удаленных пользователей хоста (которые нарушают спецификацию протокола FTP, однако закрывают некоторые дыры в безопасности).
-r Переводит сервер с режим read-only (только для чтения). Все команды, которые могут модифицировать файловую систему, запрещены.
-S Когда указана эта опция, ftpd пишет в лог /var/log/ftpd все загрузки файлов anonymous, если этот файл лога существует.
-T Клиент может также запрашивать отличающийся период таймаута; максимально разрешенный период таймаута, который может быть установлен, задается опцией -T в секундах. Лимит по умолчанию 2 часа.
-t Таймаут неактивности в секундах (по умолчанию 15 минут).
-U Эта опция инструктирует ftpd использовать порты данных в диапазоне IP_PORTRANGE_DEFAULT вместо IP_PORTRANGE_HIGH. Это изменение полезно для некоторых специфичных конфигураций файервола; см. ip(4) для дополнительной информации.
Примите к сведению, что эта опция является виртуальной и не работает на FreeBSD 5.0 выше; оба диапазона портов на них по умолчанию идентичны.
-u Маска создания режима файла по умолчанию (file creation mode mask) устанавливается в umask, которая ожидается в восьмеричной числовой величине. См. umask(2) для деталей. Эта опция может быть переустановлена (запрещена) через login.conf(5).
-v Синоним -d.
-W Не записывать в лог /var/log/wtmp сессии FTP.
Файл /var/run/nologin может использоваться для запрета доступа по ftp. Если файл существует, то ftpd показывает его и завершается. Если файл /etc/ftpwelcome существует, то ftpd выводит его перед выдачей сообщения ``ready''. Если файл /etc/ftpmotd существует, ftpd выводит его после успешного логина. Примите к сведению, что файл motd используется относительно окружения логина. Это означает, например, что в случае пользователя anonymous он будет браться из папки ~ftp/etc.
Сервер ftp в настоящий момент поддерживает следующие запросы (регистр не имеет значения). Запросы, помеченные [RW] запрещены, если указана опция -r. Запрос Описание ABOR прерывание предыдущей команды ACCT указывает аккаунт (игнорируется) ALLO выделяет место хранения, storage (бессмысленный запрос) APPE добавить в файл [RW] CDUP изменение текущей рабочей директории на родительскую CWD изменение текущей рабочей директории DELE удалить файл [RW] EPRT указать порт соединения данных (data connection port), multiprotocol EPSV подготавливает передачу server-to-server, multiprotocol FEAT выдает расширенную информацию о сервере HELP выдать подсказку LIST выдать список файлов в директории (‘‘ls -lgA’’) LPRT указать порт соединения данных (data connection port), multiprotocol LPSV подготавливает передачу server-to-server, multiprotocol MDTM показать время последней модификации файла MKD создать папку [RW] MODE указать режим передачи данных NLST предоставить список имен файлов в папке NOOP ничего не делать PASS указать пароль PASV подготавливает передачу server-to-server PORT указать порт соединения данных (data connection port) PWD вывести текущую рабочую директорию QUIT завершить сессию REST рестартовать неоконченную передачу RETR запросить файл RMD удалить директорию [RW] RNFR указать имя файла rename-from [RW] RNTO указать имя файла rename-to [RW] SITE нестандартные команды (см. следующую секцию) SIZE показать размер файла STAT показать статус сервера STOR сохранить файл [RW] STOU сохранить файл с уникальным именем [RW] STRU указать структуру data transfer SYST показать имя операционной системы сервера TYPE указать тип передачи данных USER указать имя пользователя XCUP изменить текущую рабочую директорию на родительскую (этот запрос устарел) XCWD изменить рабочую директорию (этот запрос устарел) XMKD создать директорию (этот запрос устарел) [RW] XPWD показать текущую рабочую директорию (этот запрос устарел) XRMD удалить директорию (этот запрос устарел) [RW]
Следующие нестандартные UNIX-команды поддерживаются запросом SITE.
Запрос Описание UMASK Изменить umask. Например SITE UMASK 002 IDLE Установить таймер idle. Например SITE IDLE 60 CHMOD Установить права (режим) доступа к файлу [RW]. Например SITE CHMOD 755 filename HELP Выдать подсказку. Например SITE HELP MD5 Показать контрольную сумму MD5 для файла, например SITE MD5 filename
Внимание: запросы SITE запрещены для логинов anonymous.
Остальные запросы ftp, указанные в стандарте Internet RFC 959, распознаются, но не реализованы. MDTM и SIZE не указаны в RFC 959, однако появятся в следующем обновленном FTP RFC. Для предотвращения denial-of-service (DOS, отказ от обслуживания) атак, запросы SIZE к файлам размером более чем 10240 байт будут запрещены, если текущий тип передачи ASCII.
Сервер ftp прерывает активную передачу файла только по команде ABOR вслед за Telnet "Interrupt Process" (IP) сигналом и Telnet "Synch" сигналом в потоке команд Telnet, как описано в стандарте Internet RFC 959. Если команда STAT принята во время передачи данных вместе с Telnet IP Synch, то будет возвращен статус передачи.
Ftpd интерпретирует имена фалов в соответствии с конвенции ‘‘globbing’’, используемой csh(1). Это разрешает пользователям задействовать метасимволы ‘‘*?[]{}~’’.
Ftpd использует аутентификацию пользователей по следующим 6 правилам:
1. Имя пользователя должно быть в базе данных паролей /etc/passwd и не иметь нулевой (пустой) пароль. В этом случае пароль должен быть предоставлен клиентом перед любыми выполняемыми операциями с файлами. Если пользователь имеет ключ OPIE, ответ на успешную команду USER будет включать OPIE вызов (challenge). Клиент может выбрать ответ с командой PASS и указанием стандартного пароля или одноразовый пароль OPIE. Сервер будет автоматически определять тип предоставленного пароля и аутентифицировать пользователя соответственно. См. opie(4) для большей информации по поводу аутентификации OPIE.
2. Имя пользователя (логин) не должно быть указано в файле /etc/ftpusers.
3. Логин не должен быть членом группы, указанной в /etc/ftpusers. Записи в этом файле интерпретируются как группы, если они имеют префикс "at" `@'.
4. Пользователь должен иметь стандартный шелл, значение которого получено по запросу getusershell(3).
5. Если имя файла присутствует в /etc/ftpchroot, или пользователь является членом группы, которая присутствует в этом файле (имя группы имеет префикс `@'), сессия root будет изменена на каталог, указанный в этом файле или на каталог пользователя с помощью вызова chroot(2), как для аккаунта ``anonymous'' или ``ftp'' (см. следующий пункт). См. ftpchroot(5) для детального описания формата этого файла. Эта возможность может быть также переключена разрешением boolean "ftp-chroot" возможности в login.conf(5). Однако пользователь должен все также предоставить пароль. Эта возможность предназначена в качестве компромисса между полным анонимным аккаунтом и полнопривилегированным аккаунтом. Аккаунт должен также быть настроен для anonymous.
6. Если имя пользователя ‘‘anonymous’’ или ‘‘ftp’’, должен существовать anonymous аккаунт ftp в файле паролей (пользователь ‘‘ftp’’). В этом случае пользователю разрешен логин путем указания любого пароля (по соглашению это имя почтового ящика пользователя). Когда установлена опция -S, все передачи будут записываться в лог.
В последнем случае ftpd вводит специальные ограничения для привилегий доступа клиента. Сервер выполняет команду chroot(2) в домашнюю директорию пользователя ‘‘ftp’’. В специальном случае, если домашняя папка пользователя ``ftp'' содержит в пути разделитель /./, ftpd использует левую сторону имени директории для chroot(2), и правую сторону для изменения текущей директории впоследствии. Типичный пример /usr/local/ftp/./pub. Чтобы не нарушить защиту системы, рекомендуется поддерево ``ftp'' сконструировать по следующим правилам:
~ftp Сделать пользователя root владельцем домашней директории пользователя ‘‘ftp’’, и сделать невозможной для запись в эту директорию кем бы то ни было.
~ftp/etc Сделать для этой директории владельцем ``root'' и сделать эту папку невозможной для записи кем бы то ни было (режим 555). Файлы pwd.db (см. passwd(5)) group(5) должны быть доступны для команды ls(1) для возможности предоставить имена пользователей ранее, чем номера. Поле пароля в passwd(5) не используется, и не должно содержать реальных паролей. Если присутствует файл ftpmotd, то он будет успешно напечатан после успешного логина. Файлы должны иметь режим доступа 444.
~ftp/pub Эта папка и подпапки должны иметь владельцами пользователей и групп, которым разрешено помещать файлы в них, доступны на запись только для них (режим 755 или 775). Они не должны иметь владельца ``ftp'' или записываемыми из его группы, иначе гоствые пользователи могут переполнить диск нежелательными файлами.
Если у системы несколько IP адресов, ftpd поддерживает идею виртуальных хостов, которые обеспечивают возможность определить несколько анонимных anonymous регионов ftp, каждая со своим адресом internet. Файл /etc/ftphosts содержит информацию, относящуюся к каждому виртуальному хосту. Каждый хост задается отдельной строкой, содержащей следующие поля, отделенные пробелами:
hostname Содержит имя или IP адрес виртуального хоста.
user Содержит запись пользователя в системном файле паролей. Для нормальной работы анонимного ftp, у этих пользователей access uid, gid и членство в группе определяют файловый доступ для анонимного региона ftp. Этот регион, на который любой пользователь переключается (chrooted) при логине, определяется домашней директорией для этого аккаунта. Пользовательский id и группа для любого аккаунта ftp должны быть теми же, как и для стандартного пользователя ftp.
statfile Файл, с который будет писаться лог всех передач файлов (по умолчанию это файл /var/log/ftpd).
welcome Этот файл содержит приветствие пользователя, которое отображается перед приглашением "server ready". Файл по умолчанию /etc/ftpwelcome.
motd Этот файл отображается после логина пользователя. Файл по умолчанию /etc/ftpmotd.
Строки, начинающиеся с '#' игнорируются и могут использоваться для добавления комментариев.
Назначение виртуального хоста для главного IP адреса или имени хоста меняют умолчание для ftp логина на этот адрес. 'user', 'statfile', 'welcome' и 'motd' поля могут быть пустыми или содержать одиночный дефис '-', что показывает использование величины по умолчанию.
С любой анонимной конфигурацией логина необходимо производить тщательные настройки для защиты и предотвращения проблем с безопасностью.
Утилита ftpd имеет внутреннюю поддержку удаленных запросов для предоставления списка файлов, и не будет вызывать /bin/ls для измененного (chrooted) или (non-chrooted) окружения. Исполняемые файлы ~/bin/ls не нужно размещать в chrooted-дерево, и не требуется существование каталога ~/bin.
ФАЙЛЫ /etc/ftpusers Список нежелательных/запрещенных пользователей. /etc/ftpchroot Список обычных пользователей, для который должен выполняться chroot. /etc/ftphosts Конфигурационный файл виртуальных хостов. /etc/ftpwelcome Сообщение приглашения. /etc/ftpmotd Сообщение приглашения после логина. /var/run/ftpd.pid По умолчанию pid-файл для режима демона. /var/run/nologin Отображается и доступ запрещается. /var/log/ftpd Лог-файл для анонимных передач файлов. /var/log/xferlog Место по умолчанию для логов сессий.
СМ. ТАКЖЕ ftp(1), umask(2), getusershell(3), opie(4), ftpchroot(5), login.conf(5), inetd(8), syslogd(8)
ИСТОРИЯ Утилита ftpd появилась в 4.2BSD. Поддержка IPv6 была добавлена с WIDE Hydrangea IPv6 stack kit.
БАГИ Сервер должен быть запущен под супер-прользователем для создания сокетов с привилегированными портами. Это поддерживает эффективный user id залогиненного пользователя, возвращаясь к суперпользователю только когда делается привязка адресов к сокетам. Возможные дыры в безопасности расширенно рассматриваются, однако возможно не завершены. |