СИНТАКСИС
ftpd [-AdDhlMPSU ] [-T maxtimeout ] [-t timeout ] [-u mask ]
ОПИСАНИЕ
Ftpd - это серверный процесс Internet File Transfer Protocol'а. Сервер использует протокол TCP и слушает порт, определённый спецификацией сервиса ``ftp'' ; смотри services.
Доступные опции:
- -A
- Разрешает только анонимные ftp соединения или бюджеты, перечисленные в /etc/ftpchroot Другие попытки соединения будут отвергнуты.
- -d
- Информация отладки записывается в syslog с помощью LOG_FTP.
- -D
- Если указан этот параметр, то ftpd отделится от командной оболочки и станет демоном, принимая соединения на порту FTP и создавая наследующие процессы (child processes) для управления этими соединениями. Такой запуск создает меньшую нагрузку, чем запуск ftpd из inetd и, следовательно, полезен на загруженных серверах для уменьшения нагрузки.
- -h
- Для пассивных соединений сервер будет использовать порты данных в верхнем диапазоне портов. Этот диапазон определяется в <netinet/in.h> переменными IPPORT_HIFIRSTAUTO и IPPORT_HILASTAUTO В Ox они установлены как 49152 и 65535 соответственно.
- -l
- Каждая успешная и прерванная ftp сессия регистрируется с помощью syslog посредством LOG_FTP. Если этот параметр указан дважды, то также будут регистрироваться операции копирования, записи, добавления, удаления, создания каталога, удаления каталога и переименования вместе со своими аргументами - именами файлов.
- -M
- Разрешен режим multihomed (много домашних каталогов). Вместо простого использования ~ftp для анонимных передач, используется каталог, соответствующий полностью заданному имени IP-адреса, к которому подключился клиент, и расположенный внутри ~ftp
- -p
- Запретить ftp-соединения в пассивном режиме. Полезно, если вы находитесь за межсетевым экраном, который отвергает соединения на порты с произвольно высокими номерами. Многие ftp-клиенты пытаются соединиться с сервером сначала в пассивном режиме и не всегда корректно, что заставляет сервер отвергать соединения на порт к которому он просил клиента подключиться.
- -P
- Разрешает недопустимые номера портов или адреса для команды PORT, инициализирующей соединения. По умолчанию ftpd нарушает RFC и, таким образом, выдает команду PORT на незарезервированные порты и требует, чтобы он использовал тот же адрес источника, с которого поступило соединение. Это предотвращает "FTP bounce attack" против сервисов на обеих машинах.
- -S
- При использовании данного параметра ftpd регистрирует все анонимные скачивания в файле /var/log/ftpd если этот файл существует.
- -U
- Каждая конкурирующая ftp сессия регистрируется в файле /var/run/utmp позволяя увидеть их такой команде как who.
- -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. Это позволяет пользователям использовать метасимволы ``*?[]{}~ ''
Ftpd аутентифицирует пользователей в соответствии с пятью правилами.
- Регистрационное имя должно быть в базе данных паролей, /etc/pwd.db и не должно иметь нулевой пароль. В этом случае пароль должен быть указан клиентом до того, как могут быть выполненые любые файловые операции. Если у пользователя имеется ключ S/Key, то ответ успешной команды USER будет содержать вызов S/Key. Клиент может в команде PASS ответить либо стандартным паролем, либо одноразовым паролем S/Key. Сервер автоматически определит тип полученного пароля и выполнит соответствующую аутентификацию. Подробнее по S/Key аутентификации смотрите в skey S/Key является торговой маркой Bellcore.
- Регистрационное имя не должно быть указано в файле /etc/ftpusers
- Пользователь должен иметь стандартный shell, возвращаемый getusershell.
- Если имя пользователя указано в файле /etc/ftpchroot то корень сессии будет переключен в каталог пользователя с помощью chroot, как для бюджета пользователя ``anonymous'' или ``ftp'' (см. следующую тему). Однако пользователь все-равно должен ввести пароль. Эта особенность предназначена как компромис между полностью анонимным и полностью привилегированным бюджетами. Бюджет пользователя должен быть настроен также, как для анонимного пользователя.
- Если имя пользователя - ``anonymous'' или ``ftp'' то в файле паролей должен присутствовать бюджет анонимного ftp (пользователь ``ftp )'' В этом случае регистрация пользователя разрешена при указании любого пароля (по традиции в качестве пароля должен указываться email-адрес пользователя).
В последнем случае ftpd предпринимает специальные действия для ограничения доступа клиенту. Сервер выполняет chroot в домашний каталог пользователя ``ftp'' Для того, чтобы система не была взломана, рекомендуется тщательно разрабатывать поддерево ``ftp'' следуя таким правилам:
- ~ftp
- Установите владельцем домашнего каталога ``root'' и сделайте недоступным на запись для всех (mode 555).
- ~ftp/bin
- Установите владельцем этого каталога ``root'' и сделайте недоступным на запись для всех (mode 511). Этот каталог не обязательный, если у вас нет команд, которые мог бы выполнить анонимный ftp пользователь (команда ls является встроенной). Все программы в этом каталоге должны иметь mode 111 (только выполнение).
- ~ftp/etc
- Установите владельцем этого каталога ``root'' и сделайте недоступным на запись для всех (mode 511). Файлы pwd.db (смотрите pwd_mkdb8) и group должны присутствовать, чтобы команда ls могла выводить имена владельцем, а не номера. Поле пароля в pwd.db не используется и не должно содержать реальных паролей. При наличии файла motd он будет распечатываться после успешной регистрации. Эти файлы должны иметь mode 444.
- ~ftp/pub
- Установите для этого каталога mode 555 и владельца ``root'' Это традиционное место, где хранятся файлы, публично доступные для копирования.
Если регистрация в файл /var/log/ftpd разрешена, информация будет записана в следующем виде:
- time
- Время и дата получения файлов в формате ctime.
- 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
- Файл журнала регистрации событий для анонимных пользователей.
|