FTPD
Index Return to Main Contents
BSD mandoc
НАЗВАНИЕ
ftpd - Сервер Internet File Transfer ProtocolСИНТАКСИС
ftpd [-AdDhlMPSU ] [-T maxtimeout ] [-t timeout ] [-u mask ]ОПИСАНИЕ
Ftpd - это серверный процесс Internet File Transfer Protocol'а. Сервер использует протокол TCP и слушает порт, определённый спецификацией сервиса “ftp” ; смотри services(5).Доступные опции:
- -A
- Разрешает только анонимные ftp соединения или бюджеты, перечисленные в /etc/ftpchroot . Другие попытки соединения будут отвергнуты.
- -d
- Информация отладки записывается в syslog с помощью LOG_FTP.
- -D
- Если указан этот параметр, то ftpd отделится от командной оболочки и станет демоном, принимая соединения на порту FTP и создавая наследующие процессы (child processes) для управления этими соединениями. Такой запуск создает меньшую нагрузку, чем запуск ftpd из inetd(8) и, следовательно, полезен на загруженных серверах для уменьшения нагрузки.
- -h
- Для пассивных соединений сервер будет использовать порты данных в верхнем диапазоне портов. Этот диапазон определяется в <netinet/in.h> переменными IPPORT_HIFIRSTAUTO и IPPORT_HILASTAUTO . В Ox они установлены как 49152 и 65535 соответственно.
- -l
- Каждая успешная и прерванная ftp(1) сессия регистрируется с помощью syslog посредством LOG_FTP. Если этот параметр указан дважды, то также будут регистрироваться операции копирования, записи, добавления, удаления, создания каталога, удаления каталога и переименования вместе со своими аргументами - именами файлов.
- -M
- Разрешен режим multihomed (много домашних каталогов). Вместо простого использования ~ftp для анонимных передач, используется каталог, соответствующий полностью заданному имени IP-адреса, к которому подключился клиент, и расположенный внутри ~ftp .
- -p
- Запретить ftp-соединения в пассивном режиме. Полезно, если вы находитесь за межсетевым экраном, который отвергает соединения на порты с произвольно высокими номерами. Многие ftp-клиенты пытаются соединиться с сервером сначала в пассивном режиме и не всегда корректно, что заставляет сервер отвергать соединения на порт к которому он просил клиента подключиться.
- -P
- Разрешает недопустимые номера портов или адреса для команды PORT, инициализирующей соединения. По умолчанию ftpd(8) нарушает RFC и, таким образом, выдает команду PORT на незарезервированные порты и требует, чтобы он использовал тот же адрес источника, с которого поступило соединение. Это предотвращает "FTP bounce attack" против сервисов на обеих машинах.
- -S
- При использовании данного параметра ftpd регистрирует все анонимные скачивания в файле /var/log/ftpd , если этот файл существует.
- -U
- Каждая конкурирующая ftp(1) сессия регистрируется в файле /var/run/utmp , позволяя увидеть их такой команде как who(1).
- -T maxtimeout
- Клиент также может требовать разные периоды таймаута; опцией -T можно установить максимально разрешенный период длительностью maxtimeout секунд. По умолчанию ограничение - 2 часа.
- -t timeout
- Длительность таймаута неактивности установить в timeout секунд (по умолчанию - 15 минут).
- -u mask
- Установить umask равную mask вместо 027 по умолчанию. Кроме этого, запрещается chmod.
Для запрета ftp-доступа можно использовать файл /etc/nologin . Если файл существует, выводит его и выходит. Если существует файл /etc/ftpwelcome , то печатает его перед выводом сообщения “ready .” Если существует файл /etc/motd , то печатает его после успешной регистрации. Если в каталоге существует файл .message , то выводит его при входе в каталог.
В настоящее время ftp-сервер поддерживает следующие ftp-запросы. Регистр запросов игнорируется.
- Запрос Ta Описание
- ABOR Ta прервать предыдущую команду
- ACCT Ta задать бюджет пользователя (игнорируется)
- ALLO Ta разместить хранилище - allocate storage (бессмысленно)
- APPE Ta добавить в файл
- CDUP Ta перейти в каталог верхнего уровня
- CWD Ta сменить рабочий каталог
- DELE Ta удалить файл
- HELP Ta вывод справочной информации
- LIST Ta получить список файлов в каталоге (“ls -lgA ” )
- MKD Ta создать каталог
- MDTM Ta показать время последней модификации файла
- MODE Ta определить тип пересылки данных mode
- NLST Ta получить список имен файлов в каталоге
- NOOP Ta ничего не делать
- PASS Ta указать пароль
- PASV Ta приготовиться к пересылке сервер-серверу
- PORT Ta задать порт подключения данных
- PWD Ta сообщить текущий рабочий каталог
- QUIT Ta прервать сессию
- REST Ta продолжить незавершенную пересылку
- RETR Ta принять файл
- RMD Ta удалить каталог
- RNFR Ta указать имя файла rename-from
- RNTO Ta указать имя файла rename-to
- SITE Ta нестандартные команды (см. следующий раздел)
- SIZE Ta вернуть размер файла
- STAT Ta вернуть статус сервера
- STOR Ta сохранить файл
- STOU Ta сохранить файл с уникальным именем
- STRU Ta определить тип пересылки данных structure
- SYST Ta сообщить тип операционной системы сервера
- TYPE Ta определить тип пересылаемых данных type
- USER Ta указать имя пользователя
- XCUP Ta перейти в каталог верхнего уровня (deprecated)
- XCWD Ta сменить рабочий каталог (deprecated)
- XMKD Ta создать каталог (deprecated)
- XPWD Ta сообщить текущий рабочий каталог (deprecated)
- XRMD Ta удалить каталог (deprecated)
Следующие нестандартные или UNIX-вые команды поддерживаются запросом SITE.
- Запрос Ta Описание
- UMASK Ta сменить, напр., ``SITE UMASK 002''
- IDLE Ta установить idle-timer, напр., ``SITE IDLE 60''
- CHMOD Ta сменить mode файла, напр., ``SITE CHMOD 755 filename''
- HELP Ta получить справочную информацию.
Остальные ftp-запросы, определенные в Internet RFC 959, распознаются, но не реализованы. MDTM и SIZE в RFC 959 не определены, но появятся в следующих обновлениях FTP RFC.
Ftp-сервер прервет активную передачу файла только если перед командой ABOR в командном потоке Telnet будет переданы сигналы Telnet "Interrupt Process" (IP) и Telnet "Synch", как описано в Internet RFC 959. Если во время передачи данных после Telnet IP и Synch получена команда STAT, будет возвращен статус передачи.
Ftpd интерпретирует имена файлов в соответствии с соглашениями “globbing ,” используемыми csh(1). Это позволяет пользователям использовать метасимволы “*?[]{}~ . ”
Ftpd аутентифицирует пользователей в соответствии с пятью правилами.
- Регистрационное имя должно быть в базе данных паролей, /etc/pwd.db , и не должно иметь нулевой пароль. В этом случае пароль должен быть указан клиентом до того, как могут быть выполненые любые файловые операции. Если у пользователя имеется ключ S/Key, то ответ успешной команды USER будет содержать вызов S/Key. Клиент может в команде PASS ответить либо стандартным паролем, либо одноразовым паролем S/Key. Сервер автоматически определит тип полученного пароля и выполнит соответствующую аутентификацию. Подробнее по S/Key аутентификации смотрите в skey(1) S/Key является торговой маркой Bellcore.
- Регистрационное имя не должно быть указано в файле /etc/ftpusers .
- Пользователь должен иметь стандартный shell, возвращаемый getusershell(3).
- Если имя пользователя указано в файле /etc/ftpchroot , то корень сессии будет переключен в каталог пользователя с помощью chroot(2), как для бюджета пользователя “anonymous” или “ftp” (см. следующую тему). Однако пользователь все-равно должен ввести пароль. Эта особенность предназначена как компромис между полностью анонимным и полностью привилегированным бюджетами. Бюджет пользователя должен быть настроен также, как для анонимного пользователя.
- Если имя пользователя - “anonymous” или “ftp ,” то в файле паролей должен присутствовать бюджет анонимного ftp (пользователь “ftp ) .” В этом случае регистрация пользователя разрешена при указании любого пароля (по традиции в качестве пароля должен указываться email-адрес пользователя).
В последнем случае ftpd предпринимает специальные действия для ограничения доступа клиенту. Сервер выполняет chroot(2) в домашний каталог пользователя “ftp .” Для того, чтобы система не была взломана, рекомендуется тщательно разрабатывать поддерево “ftp ,” следуя таким правилам:
- ~ftp
- Установите владельцем домашнего каталога “root” и сделайте недоступным на запись для всех (mode 555).
- ~ftp/bin
- Установите владельцем этого каталога “root” и сделайте недоступным на запись для всех (mode 511). Этот каталог не обязательный, если у вас нет команд, которые мог бы выполнить анонимный ftp пользователь (команда ls(1) является встроенной). Все программы в этом каталоге должны иметь mode 111 (только выполнение).
- ~ftp/etc
- Установите владельцем этого каталога “root” и сделайте недоступным на запись для всех (mode 511). Файлы pwd.db (смотрите pwd_mkdb8) и group(5) должны присутствовать, чтобы команда ls могла выводить имена владельцем, а не номера. Поле пароля в pwd.db не используется и не должно содержать реальных паролей. При наличии файла motd , он будет распечатываться после успешной регистрации. Эти файлы должны иметь mode 444.
- ~ftp/pub
- Установите для этого каталога mode 555 и владельца “root .” Это традиционное место, где хранятся файлы, публично доступные для копирования.
Если регистрация в файл /var/log/ftpd разрешена, информация будет записана в следующем виде:
- time
- Время и дата получения файлов в формате ctime(3).
- elapsed time
- Время копирования, в секундах.
- remote host
- Удаленная машина (или IP-адрес).
- bytes
- Количество переданных байт.
- path
- Полный путь (относительно ftp chroot каталога) переданного файла.
- type
- Тип передачи - либо “a” для ASCII, либо “b” для binary.
- unused
- Неиспользуемое поле, содержащее для совместимости “* .”
- unused
- Неиспользуемое поле, содержащее для совместимости “o .”
- user type
- Тип пользователя - либо “a” для anonymous, либо “r” для реального пользователя (всегда должен быть анонимным).
- name
- Либо регистрационное имя системы, либо значение “email address ,” если пользователь анонимный.
- unused
- Неиспользуемое поле, содержащее для совместимости “0 ,”
- real name
- Регистрационное имя в системе, если соединение не анонимное или “* ,” если анонимное.
- virtual host
- Виртуальная машина, с которой было выполнено соединение.
Хотя имеются поля для регистрационной информации реальных пользователей, этот файл используется только для анонимных сеансов передачи. Неиспользуемые поля существуют только для совместимости с другими ftpd реализациями.
ФАЙЛЫ
- /etc/ftpusers
- Список нежелательных/запрещенных пользователей.
- /etc/ftpchroot
- Список обычных пользователей, для которых нужно выполнить chroot.
- /etc/ftpwelcome
- Приветствие.
- /etc/motd
- Приветствие после регистрации.
- /etc/nologin
- Наличие этого файла влечёт за собою отказ в доступе с одновременной распечаткой его содержимого.
- /var/run/utmp
- Список пользователей в системе.
- /var/run/ftpd.pid
- Id процесса, если запущен в режиме демона.
- /var/log/ftpd
- Файл журнала регистрации событий для анонимных пользователей.
СМОТРИТЕ ТАКЖЕ
ftp(1), skey(1), who(1), getusershell(3), syslogd(8)ОШИБКИ
Для создания подключений с привилегированными номерами портов сервер должен выполняться от имени суперпользователя. Он устанавливает действующий ID зарегистрированного пользователя, возвращаясь в режим суперпользователя только для привязки адресов к доменным подключениям. Возможные прорехи в безопасности были очень тщательно изучены, но, возможно, не полностью.ИСТОРИЯ
Команда появилась в BSD 4.2 .ПРАВА
Copyright (c) 1985, 1988, 1991, 1993The Regents of the University of California. All rights reserved. Fl P
Перевод - Александр Саввин, savvin@mail.ru, (c) 2001
Index
- НАЗВАНИЕ
- СИНТАКСИС
- ОПИСАНИЕ
- ФАЙЛЫ
- СМОТРИТЕ ТАКЖЕ
- ОШИБКИ
- ИСТОРИЯ
- ПРАВА