FreeBSD: man ftpd Печать
Добавил(а) microsin   

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