Перевод английской справки man ftpd от Red Hat Linux 4.
ftpd [-A | -a] [-C] [-c] [-d] [-l] [-v] [-T maxtimeout] [-t timeout] [-p port]
[-U ftpusers-file] [-u umask] [-r realm-file] [-s srvtab] [-w{ip|max-
hostlen[,{striplocal|nostriplocal}]}]
ОПИСАНИЕ
Ftpd является процессом сервера DARPA Internet File Transfer Protocol. Сервер использует протокол TCP и слушает порт, указанный с спецификации ‘‘ftp’’ описаний сервисов см. services(5).
Доступные опции:
-A Соединения разрешены только пользователям, которые аутентифицированы через механизм ftp AUTH. Анонимный доступ к ftp может быть разрешен, если это сконфигурировано. Ftpd при необходимости будет запрашивать пароль.
-a Соединения разрешены только пользователям, которые аутентифицированы через механизм ftp AUTH, а также кто авторизован для соединения по именованным аккаунтам named account без пароля. Анонимный доступ к ftp может быть разрешен, если это сконфигурировано.
-C Неанонимные пользователи должны иметь локальные удостоверения (например, для аутентификации удаленных файловых серверов), и должны ввести пароль, за исключением, если они имеют перенаправленные удостоверения как часть аутентификации.
-c Разрешает использовать команду CCC (Clear Command Channel). Это разрешает менее защищенные соединения, и должно использоваться только для отладки.
-d Отладочная информация будет записываться в syslog (идентично -v).
-v Отладочная информация будет записываться в syslog (идентично -d).
-l Каждая сессия ftp(1) будет записываться в syslog. Если этот флаг указан дважды, то будет записыватся дополнительная информация о выполняемых операциях (такая как запрошенные файлы, создание каталогов и т. п.). Если этот флаг указан три раза, будет также записываться другая статистика, как например количество переданных байт.
-T maxtimeout
Таймаут времени отключения для клиента в секундах (максимальная длительность сессии), по умолчанию 2 часа. Этот таймаут отличается от таймаута неактивности, указанного с опцией -t (см. далее).
-t timeout
Таймаут времени неактивности в секундах (по умолчанию 15 минут).
-p port
Запуск работы сервера с прослушиванием соединений на указанном TCP-порте. Обычно сервер ftp вызывается через демон inetd(8).
-U ftpusers-file
Указывает полный путь и имя для файла ftpusers. Значение по умолчанию /etc/ftpusers. В этом файле указываются имена пользователей, которым запрещен вход в систему через ftp. Среди таких пользователей обычно root, daemon, bin, uucp и news.
-u umask
Установка umask для процесса ftpd. Значение по умолчанию обычно 027.
-r realm-file
Устанавливает имя файла krb.conf. Значение по умолчанию /etc/krb5.conf.
-s srvtab
Устанавливает имя файла srvtab для применения аутентификации Kerberos V4.
Значение по умолчанию /etc/srvtab.
-w {ip|maxhostlen[,{striplocal|nostriplocal}]}
Управляет формой удаленных имен хостов, передаваемых в login(1). Указывает числовые IP, которые всегда передаются в login(1). Указывает число maxhostlen, которое устанавливаает макисмальную длину имен хостов, передаваемых в login(1) перед тем, как они будут переданы как числовые IP-адреса. Если maxhostlen == 0, то используются настройки системы по умолчанию, как определено структурами utmp или utmpx. Опции nostriplocal и striplocal которые должны быть указаны после запятой, управляют тем, что нужно или нет отделять local host domain от remote hostname. По умолчанию дейчтвует striplocal.
Сервер ftp в настоящий момент поддерживает следующие запросы (регистр не имеет значения):
Запрос Описание
ABOR прерывание предыдущей команды
ACCT указывает аккаунт (игнорируется)
ADAT отправляет сообщение протокола аутентификации
ALLO выделяет хранилище (бессмысленный запрос)
APPE добавить в файл
AUTH указывает для исполнения протокол аутентификации
CCC устанавливает режим защиты канала команд для "Clear" (нет защиты). Запрос работает только в случае указания опции -c в командной строке.
CDUP изменение текущей рабочей директории на родительскую
CWD изменение текущей рабочей директории
DELE удалить файл
ENC послать privacy и integrity protected команду (передаваемую как аргумент)
HELP выдать подсказку
LIST выдать список файлов в директории (‘‘ls -lgA’’)
MIC послать integrity protected command (передаваемую как аргумент)
MKD создать папку
MDTM показать время последней модификации файла
MODE указать режим передачи данных
NLST предоставить список имен файлов в папке
NOOP ничего не делать
PASS указать пароль
PASV подготовить передачу в режиме server-to-server
PBSZ указать размер protection buffer
PORT указать порт соединения для данных
PROT указать уровень защиты, которым защищается передача данных
PWD вывести текущую рабочую директорию
QUIT завершить сессию
REST рестартовать неоконченную передачу
RETR запросить файл
RMD удалить директорию
RNFR указать имя файла rename-from
RNTO указать имя файла rename-to
SITE нестандартные команды (см. следующую секцию)
SIZE показать размер файла
STAT показать статус сервера
STOR сохранить файл
STOU сохранить файл с уникальным именем
STRU указать структуру data transfer
SYST показать имя операционной системы сервера
TYPE указать тип передачи данных
USER указать имя пользователя
XCUP изменить текущую рабочую директорию на родительскую (этот запрос устарел)
XCWD изменить рабочую директорию (этот запрос устарел)
XMKD создать директорию (этот запрос устарел)
XPWD показать текущую рабочую директорию (этот запрос устарел)
XRMD удалить директорию (этот запрос устарел)
Следующие нестандартные UNIX-команды поддерживаются запросом SITE.
Запрос Описание
UMASK Изменить umask. Например SITE UMASK 002
IDLE Установить таймер idle. Например SITE IDLE 60
CHMOD Установить права (режим) доступа к файлу. Например SITE CHMOD 755 filename
HELP Выдать подсказку. Например SITE HELP
Остальные запросы ftp, указанные в стандарте Internet RFC 959, распознаются, но не реализованы. MDTM и SIZE не указаны в RFC 959, однако появятся в следующем обновленном FTP RFC.
Сервер ftp прерывает активную передачу файла только по команде ABOR вслед за Telnet "Interrupt Process" (IP) сигналом и Telnet "Synch" сигналом в потоке команд Telnet, как описано в стандарте Internet RFC 959. Если команда STAT принята во время передачи данных вместе с Telnet IP Synch, то будет возвращен статус передачи.
Ftpd интерпретирует имена фалов в соответствии с конвенции ‘‘globbing’’, используемой csh(1). Это разрешает пользователям задействовать метасимволы ‘‘*?[]{}~’’.
Ftpd использует аутентификацию пользователей по следующим правилам:
1. Имя пользователя должно быть в базе данных паролей /etc/passwd.
2. Должна быть выполнена команда AUTH для удостоверения, что протокол аутентификации успешно выполнен (в соединении с командой ADAT и ответами), и аутентифицированному пользователю разрешен доступ. В другом случае пользователем должен быть указан непустой пароль.
3. Имя пользователя не должно быть указано в файле /etc/ftpusers.
4. Пользователь должен иметь стандартный шелл, значение которого получено по запросу getusershell(3).
5. Если имя пользователя ‘‘anonymous’’ или ‘‘ftp’’, должен существовать anonymous аккаунт ftp в файле паролей (пользователь ‘‘ftp’’). В этом случае пользователю разрешен логон путем указания любого пароля (по соглашению это имя клиентского хоста).
В последнем случае ftpd вводит специальные ограничения для привилегий доступа клиента. Сервер выполняет команду chroot(2) в домашнюю директорию пользователя ‘‘ftp’’. Для того, тобы не допустить нарушения безопасности системы, рекомендуется тщательно сконструировать поддерево ‘‘ftp’’. Рекомендуются следующие правила:
~ftp Сделать домашнюю директорию, владельцем которой является пользователь ‘‘ftp’’, невозможной для записи кем бы то ни было.
~ftp/bin
Сделать для этой директории владельцем суперпользователя и сделать в эту папку невозможной для записи кем бы то ни было. Программа ls(1) должна предоставлена в спсике команд. Эта программа должна иметь режим доступа 111.
~ftp/etc
Сделать для этой директории владельцем суперпользователя и сделать в эту папку невозможной для записи кем бы то ни было. Файлы passwd(5) и group(5) должны быть представлены для команды ls для предоставления имен владельцев ранее, чем номеров. Поле пароля в passwd не используется и не должно содержать реальных защифрованных паролей. Эти файлы должны иметь режим доступа 444.
~ftp/pub
Сделайте для этой директории режим 777 и владельца ‘‘ftp’’. Пользователи, зашедшие анонимно, должны иметь возможность сохранять файлы в эту папку.
Если команда ADAT успешно завершена, управляющий канал должен быть защищен частно или интегрировано. В этом случае через канал управления разрешены только команды MIC и ENC. Аргументом команды MIC является закодированная строка (base 64 encoded string) которая, будучи декодированной, является ftp-командой, integrity protected криптографической контрольной суммой. Аргументом команды ENC command является base 64 encoded string, который, будучи декодированным, является командой ftp, privacy и integrity защищенной.
Если команда ADAT успешно завершена, ftp отвечает также с защитой integrity или privacy.
Если команда ADAT успешно завершена, канал data также может быть защищен. Команда PROT принимает S для integrity и P для privacy защиты. За исключением того, что команда ADAT успешно завершена, уровень защиты, приянтый командой PROT, является C (clear).
СМ. ТАКЖЕ
ftp(1), getusershell(3), syslogd(8)
Lunt, S. J., FTP Security Extensions, Internet Draft, ноябрь 1993.
БАГИ
Аккаунту anonymous свойственна повышенная опасность, и его нужно по возможности избегать.
Сервер должен быть запущен с правами superпользователя для создания сокетов с привелигированными именами портов. Для эффективной поддержки id залогиненного пользователя, возврат к суперпользователю доллжен быть только с целью привязки адресов к сокетам. Здесь возможна эксплуатация дыр в защите.
ИСТОРИЯ
Команда ftpd появилась в 4.2BSD.
|