по WWW : <URL:http://www.cetis.hvu.nl/~koos/wu-ftpd-faq.html>
по FTP : <URL:ftp://ftp.cetis.hvu.nl/pub/koos/wu-ftpd-faq.txt>
и по E-mail : отправьте письмо по адресу wu-ftpd-faq@wu-ftpd.org указав в subject строке send faq.
Комментарии: в данной версии все еще отсутствуют замечания по работе wuftpd на некоторых операционных системах. Добро пожаловать к нам если они у вас есть.
Это FAQ (ответы на часто задаваемые вопросы) по новой версии wu-ftpd, утвержденный на ftp.wu-ftpd.org.
Самый ПЕРВЫЙ ответ: Обязательно обновите свою версию на последнюю (на сегодня: 2.5.0). В этой реализации было исправлено несколько ошибок, в том числе и проблемы связанные с безопасностью.
Примечание: Все адреса e-mail использованные в этом документе приведены только для контакта с авторами отдельных частей FAQ. Использование этих адресов в целях не имеющих отношения к данному документу запрещено.
Wuarchive-ftpd, широко известный как wu-ftpd, является заменой стандартному ftpd демону Unix систем и был разработан в Вашингтонском Университете(*.wustl.edu) Bryan D. O'Connor. (который больше не занимается его поддержкой!) wu-ftpd один из наиболее поппулярных ftp демонов в Internet, используемый огромным количеством публичных и анонимных серверов во всем мире.
Этот список рассылки обсуждает проблемы связанные с сопровождением этого демона и ftp-машин где он используется.
Чтобы подписаться, отправьте письмо со строкой в теле
SUBSCRIBE WU-FTPD <your full name>
на адрес списка рассылки: listproc@mail.wustl.edu.
Чтобы отписаться, отправьте письмо со строкой в теле
UNSUBSCRIBE WU-FTPD
на адрес списка рассылки: listproc@mail.wustl.edu.
Чтобы отправить сообщение всем подписчикам, пишите на адрес: wu-ftpd@mail.wustl.edu.
Да. Существует два архива. Старый находится здесь <URL:http://www.osat.hq.nasa.gov/wuarchive.html>. Утверждается что он имеет средства поиска, а создан и ведется Judy Pellerin (judy@machina.oact.hq.nasa.gov). На момент (February 1997) Я не смог соединиться по этому адресу. [Просто отсутствует в DNS. /комент. Lavr]
Архив существующий с июня 1994 по сей день и доступный на WWW: <URL:http://www.landfield.com/wu-ftpd/mail-archive>, и на ftp: <URL:ftp://ftp.landfield.com/wu-ftpd/mail-archive>. С возможностью поиска: <URL:http://www.landfield.com/wu-ftpd/mail-archive/search.html> Этот архив сопровождается Kent Landfield (kent@landfield.com).
Документы RFC описывающие FTP протокол: rfc959 и rfc1579. Вероятно их можно получить здесь: <URL:http://info.internet.isi.edu:80/in-notes/rfc/files/rfc959.txt> <URL:http://info.internet.isi.edu:80/in-notes/rfc/files/rfc1579.txt>
Документы по специфическим частям конфигурации и использования wu-ftpd:
Kent Landfield ведет архив всех ресурсов относящихся к wu-ftpd <URL:http://www.landfield.com/wu-ftpd/>
Darci Chapman ведет HOWTO руководство wu-ftpd касающееся Solaris <URL:http://www.wildheart.org/wu-ftpd/>
Страницы manpage для wu-ftpd можно посмотреть в режиме online: <URL:http://www.academ.com/cgi-bin/bsdi-man?proto=1.1&apropos=0&msection=local&query=ftpd> страницы manpage по ftpaccess на: <URL:http://www.academ.com/cgi-bin/bsdi-man?proto=1.1&query=ftpaccess&msection=5&apropos=0>
Academ страницы посвященные wu-ftpd: <URL:http://www.academ.com/academ/wu-ftpd/>.
'ANONYMOUS FTP CONFIGURATION GUIDELINES'
Руководства от CERT (Computer Emergency Response Team/Подразделение отвечающее за компьютерную безопасность) об установке анонимного ftp.
<URL:ftp://ftp.cert.org/pub/tech_tips/anonymous_ftp_config>
<URL:ftp://ftp.cert.org/pub/tech_tips/anonymous_ftp_abuses>
'How to set up a secure ftp server'
Документ в основном посвящен методам безопасности при установке анонимного ftp.
<URL:ftp://sunsite.unc.edu/pub/sun-info/sun-faq/FAQs/SettingUpSecureFTP.faq>
'guestgroup howto'
Документ описывающий установку-настройку гостевых-групп для сервера wu-ftpd, в настоящий момент это отдельный от данного FAQ материал.
<URL:ftp://ftp.fni.com/pub/wu-ftpd/guest-howto>
Документ описывающий настройку виртуальных ftp серверов
<URL:http://www.westnet.com/providers/multi-wu-ftpd.txt>
Ftpaccess на виртуальных ftp серверах
<URL:ftp://ftp.meme.com/pub/software/wu-ftpd-2.4.2/README.ALT.FTPACCESS>
upload.configuration.HOWTO
<URL:ftp://ftp.wu-ftpd.org/pub/wu-ftpd/upload.configuration.HOWTO> Как настроить конфигурацию для UPLOAD в версиях 2.4.2 Beta 18 VR14 и выше(включая 2.5.0).
Обязательно прочтите это. Подобное:
#> telnet xxx.yyy.nl Trying XXX.XXX.XXX.XXX ... Connected to xxx.yyy.nl. Escape character is '^]'. SunOS UNIX (xxx.yyy.nl) login: ftp Last login: Sat Oct 28 22:11:36 from xxxxxx.xxx.xxx.nl SunOS Release 4.1.3 (HSIS_X25) #1: Wed Apr 7 14:19:15 MET DST 1993 %>НЕ ДОЛЖНО ПРОИЗОЙТИ!(иначе будет взлом).
Troll Ftpd, свободнораспространяемый ftp-server, доступный с: <URL:http://www.troll.no/freebies/ftpd.html>
FileDrive, коммерческий fileserver для которого нужен его собственный клиент доступен с: <URL:http://www.filedrive.com/>
NcFTPd, коммерческий ftp сервер (свободен при использовании образовательных доменов), доступен с: <URL:http://www.ncftpd.com/>
ProFTPD, свободный ftpserver (GPL/под лицензией GNU), доступен с: <URL:http://www.proftpd.org/>
Оригинальный wu-ftpd находится на wuarchive.wustl.edu, но в настоящий момент wuarchive больше не поддерживает и не сопровождает wu-ftpd. Теперь _верное_ месторасположение wu-ftpd: ftp://ftp.wu-ftpd.org/pub/wu-ftpd/ (please use a real ftp client to access this).
Зеркала архива:
Группа разработчиков сопровождает wu-ftpd и размещает последние версии по адресу ftp.wu-ftpd.org: ftp://ftp.wu-ftpd.org/pub/wu-ftpd/ (пожалуйста используйте ftp для доступа к этому архиву). Данная версия wu-ftpd теперь сопровождается группой разработчиков доступных по email адресу: (wuftpd-dev@wu-ftpd.org).
VR-серия Wu-FTPD содержала набор расширений и исправлений ftp-сервера, которые отсутствовали в базовой версии wu-ftpd. Набор VR исправлений был интегрирован в версию wu-ftpd 2.5.0 и перестал был доступным на ftp.vr.net с конца августа месяца 1999.
BeroFTPD это эволюционная версия wu-ftpd, в которой существеено расширены возможности "virtual hosts". Правки от версий VR были включены в дистрибутив.
Достпнен с:
<URL:ftp://beroftpd.unix.eu.org/pub/BeroFTPD/>
<ftp://ftp.croftj.net/usr/bero/BeroFTPD/>
<ftp://ftp.sunet.se/pub/nir/ftp/servers/BeroFTPD/>
<ftp://sunsite.cnlab-switch.ch/mirror/BeroFTPD/>
Обычно, редактирования src/pathnames.h и выполнения build arch должно быть достаточно для компиляции wu-ftp.
Эта ошибка полностью рассмотрена в файлах INSTALL/INSTALL.orig дистрибутива wu-ftpd. Несколько строк по-теме:
Компилятор "cc" обнаружил что не неопределены: strunames, typenames, modenames, в этом случае вы можете установить "support/ftp.h" в "/usr/include/arpa/ftp.h", обязательно сделав копию старого системного header'а "ftp.h" и запустить build снова. Новый "ftp.h" должен быть полностью совместим с бывшим системным, те у вас не должно возникнуть проблем с этой заменой.
Замените "yacc" на "bison -y" в файле Makefile.
Эти ошибки исправлены в последних версиях. Сделайте апгрейд wu-ftpd, желательно на последнюю версию.
Эти ошибки исправлены в определенных версиях. Сделайте апгрейд wu-ftpd, желательно на последнюю версию.
Сначала попробуйте проверить ftpd на предмет поддержки "shadow passowrd", при условии что компиляция прошла успешно. Последняя версия изменена так чтобы "shadow password" использовался автоматически, если необходимио и возможно.
С тех пор как старые Linux дистрибутивы (в libc.5.3 исправлено) не включают "shadow password", wu-ftpd может решить что ваша система не использует "shadow passwords". В таких случаях, для использования shadow при компиляции wu-ftpd в Linux необходимо следующее:
Измените файл src/ftpd.c в районе строки 1061 на :
xpasswd = pw_encrypt(passwd, salt);
Добавьте опцию -DDIRENT_ILLEGAL_ACCESS в значения флага CFLAGS в файл src/makefiles/Makefile.lnx.
Либо, вы скомпилировали wu-ftpd с поддрежкой установки имени процесса (process title - SPT_TYPE) на машине которая этого не позволяет, тогда при изменении "process title" происходит перекрытие среды с "разрушением" переменной TZ. Перекомпилируйте wu-ftpd изменив SPT_TYPE на SPT_NONE.
Системы не поддерживающие SPT_TYPE : Aix, SGI Irix.
Либо скопируйте zoneinfo файлы в дерево ~ftp. Сюда могут относиться:
/etc/TIMEZONE /etc/default/init /etc/localtime (FreeBSD) /usr/share/lib/zoneinfo/..Имя соответсвующего файла в /usr/share/lib/zoneinfo зависит от вашей временной зоны - timezone. Необходимые файлы зависят также и от вашей операционной системы или вашей собственной настройки временной зоны timezone. Смотрите соответствующие руководства для timezone(4) и zic(1M).
Описано выше, тем не менее если ваша система имеет /etc/default/init (например Solaris 2.5) проверьте в нем правильность установки переменной TZ. Этот файл должен присутствовать затем в среде с измененным через chroot() новом корневом дереве.
Описано Francois Belanger (francois@goltier.com).
Для Digital Unix требуется /etc/zoneinfo/localtime.
Системные вызовы system на Digital Unix несколько иные чем обычно. Следуйте приведенному ниже руководству чтобы исправить это.
Входящий в Digital Unix стандартный ftpd записывает статистику после отработки chroot и Benoit Maillard (maillard@fgt.dec.com) что это происходит потому что они не используют стандартные системные вызовы. Во время просмотра дистрибутива, был найден файл syslog.c в директории support и затем изменен файл Makefile.osf в директории support/makefiles на предмет включения syslog.c в собираемую библиотеку. Затем в ходе компиляции получены две ошибки от этого файла, точнее одно предупреждение и одна ошибка. Предупреждение относилось к: if ((p = malloc(strlen(ident) + 1)) == NULL) для исправление необходимо следующее изменени: if ((p = (char *)malloc(strlen(ident) + 1)) == NULL) Ошибка же возникала врезультате "переопределения" openlog (или closelog). Она связана с переопределением следующих вызовов в <syslog.h> extern int openlog __((const char *, int, int)); extern int syslog __((int, const char *, ...)); extern void closelog __((void)); extern int setlogmask __((int)); После копирования /usr/include/syslog.h в директорию support и изменений в файле syslog.c #include <syslog.h> на #include "syslog.h" сообщения исчезли. После этих изменений все должно работать корректно как для анонимных, так и для реальных пользователей в отношении записи статистики в daemon.log файл.Это замечание было послано в список рассылки Daniel Clar (Daniel.Clar@supelec.fr).
Установка в makefile написана под использование программы install версиий bsd.
Некоторые Операционные системы используют программу install версий SVR4.
В этом случае сделайте соответствующие изменения в makefile, например:
INSTALL = /usr/ucb/install
Необходимые изменения зависят от версии Digital unix. Так для Digital unix 4.0
строка LIBES в makefile должна быть LIBES = -lsupport и никаких
изменений в crypt() не требуется.
Внесите следующие изменения в ./src/config/config.osf :
#define SecureWare #include <sys/secdefines.h> #include <sys/types.h> #include <sys/security.h> #include <sys/audit.h> #include <prot.h>и добавьте строку в файл ./src/makefiles/Makefile.osf
LIBES = -lsupport -lsecurity -laudИ замените везде вызов crypt() на bicrypt.
А для работы необходимо полностью скопировать /etc/sia в ~ftp/etc/sia. Самый простой способ:
# cd /etc # tar -cvf - sia | (cd ~ftp/etc;tar -xpf -)Также, для того чтобы воспринимались пароли больше чем 8-мь символов, необходимо заменить строку:
crypt_alg = AUTH_CRYPT_OLDCRYPT;на
crypt_alg = AUTH_CRYPT_BIGCRYPT;Этот кусок был добавлен Andrew C. Saylor (asaylor@comsource.net).
Добавьте в ./src/ftpd.c
#define SPT_SCO 6 /* write kernel u. area */ /* FTP server. */ #include "config.h" #include <cma.h> <-- добавьте это #include <sys/types.h>информация предоставлена Andrew C. Saylor (asaylor@comsource.net).
Чтобы скомпилировать для типа "trusted system" необходимы следующие изменения В файле src/config.h замените строку:
примечание: "trusted system" - в зависимости от контекста имеет разное трактование, в данном документе это относится к системе защиты (обычно это C2 security), в то время как дословный перевод "системы доверия>
#undef SHADOW_PASWWORDна
#define SHADOW_PASSWORDВ файле src/makefiles/Makefile.hpx, строка LIBES должна быть такой:
LIBES = -lsupport -lc -lPW -lsecКриптование "root" пароля отличается от метода используемого для обычных пользователей. И в таком случае необходимо использовать вызов функции bigcrypt. Ниже приведены необходимые изменения в исходном коде:
В файле src/ftpd.c, в самом начале:
#ifdef _HPUX_SOURCE #include <hpsecurity.h> #include <prot.h> #endifи в этом же файле в функции pass(), найдите где находится похожий код и внесите изменения (возможны небольшие отличия):
char *xpasswd, *bpasswd,*salt; #ifdef KERBEROS xpasswd = crypt16(passwd, salt); #else xpasswd = crypt(passwd, salt); bpasswd = bigcrypt(passwd, salt); <-- КАК ДОЛЖНО БЫТЬ #endif #ifdef ULTRIX_AUTH if ((numfails = ultrix_check_pass(passwd, xpasswd)) < 0) { #elif defined(_HPUX_SOURCE) if (pw == NULL || *pw->pw_passwd == '\0' || (strcmp(xpasswd, pw->pw_passwd) && strcmp(bpasswd, pw->pw_passwd))) { <-- И ЗДЕСЬ ТОЖЕ #else /* The strcmp does not catch null passwords! */ if (pw == NULL || *pw->pw_passwd == '\0' || strcmp(xpasswd, pw->pw_passwd)) { #endif reply(530, "Login incorrect.");Информация предоставлена Jose Luis Martinez Garcia (jluis@sitecal.es).
Если описанное выше не помогло, рассмотрим более расширенно: If the above doesn't work, some more notes :
/usr/include/shadow.h: Этот *системный* файл приводит к падению gcc при компиляции. Необходимо изменить следующее объявление: extern int lckpwdf(void), to extern int lckpwdf(void); <<--- note the ';' realpath.c: Помнится была одна внешняя ссылка (мб больше чем одна?) которая не соответствовала внутреннему объявлению. Помнится изменил объявление realpath в соответствии со внешним. Оригиналю были удалены и поэтому нет возможности точно описать изменения. ftpcmd.c: Этот файл создается из ftpcmd.y (через yacc/bison). Увы созданный код невозможно откомпилировать. Пришлось вставлять 2-е структуры взяв их из более ранней версии wu-ftpd. Вроде бы это были 'cmdtab[]' и 'sitetab[]' структуры и они вызывались до их объявления. Makefile.hpx: Изменен так чтобы не удалял исправления в ftpcmd.c описанные выше. ftpd.c: 1) установлены правки в соответствие с инструкцией в FAQ-е. Новый код работает без проблем (Вероятно попробую портировать его в POP3 сервер). 2) изменен printf где-то в районе SEPPROCTITLE для включения "wuftpd" в строку процесса (подобно hp-ux ftpd). Тут необходимо небольшое лечение связанное с тем что при RETR к именам файлов приклеиваются ^M^J.Описание прислано Chuck Davis (cdavis@wrair-amss.army.mil).
Доп. ремарка: В "trusted system'е" HP's вызов getpwnam не применяется при работе с криптованными паролями. Вместо нее нужно использовать getprpwnam. Измените ftpd.c на предмет использования getprpwnam.
pr_pw = getprpwnam(pw->pw_name); /* get shadow password */ xpasswd = crypt(passwd, pr_pw->ufld.fd_encrypt); bpasswd = bigcrypt(passwd, pr_pw->ufld.fd_encrypt);
Суммарные замечания по установке wu-ftpd в HP-UX 10.20:
wu-ftp2.4 была установлена на "чистой" HPUX 10.20, которая пришла прямо от
HP с уже постренным ядром и важное отличие этой сборки от "generic" в том что
были урезаны X-libs и X-utils (что имеет смысл порекомендовать если вы собираете
HP 10.20 только для ftp).
- Возьмите ОБА пакета wu-ftp2.4 и ansi-c компилятор для сборки (я получил свой у HP, вы можете запросить ansic.hp-10.20.tar.gz)
- сначала разверните накет содержащий "C" (HP приходит со стандартным компилятором, который можно использовать ЛИШЬ для сборки ЯДРА). Для установки компилятора "C" следуйте документации README/INSTALL. Не забудьте чтобы новый компилятор был доступен в пути или укажите где нужно откуда его вызывать.
- Соберите wu-ftpd
- Установите сервер
- Специальные замечания по настройке для сильно загруженного сервера ftp:
Сопровождаемый мной ftp сервер имеет очень сильную загрузку и это потребовало
некоторых изменений в конфигурации ядра в отношении "lock" файлов и
одновременному доступу к одним и тем же файлам. Все это было реализовано через
SAM. Существенным моментом для сохранения доступа к сильно загруженной машине
было необходимое уменьшение состояния fin_wait так чтобы "lock" на открытые
файлы сохранялся бы минимальное время. В моем случае fin_wait был уменьшен до
5 минут или меньше.
Этот раздел обсуждает особенности компиляции wuftpd в необычных ситуациях.
Добавьте в Makefile для вашей OS поддержку AFS libs/includes. На данный момент такая поддержка сделана в Makefile только для AIX. Используйте как пример. затем добавьте следующую строку в #include section of src/ftpd.c :
#include <afs/stds.h>добавлено Perry L. Morgan (pmorgan@uceng.uc.edu).
Michael Brennen (mbrennen@fni.com) написал в список рассылки следующее:
Для использования SKEY необходимо следующее: Раскоментировать строку #undef SKEY в config.h. Иногда нужно время чтобы найти это место, но думается что это не проблема. Скопируйте skey.h в директорию src. Скопируйте библиотеку libskey.a в директорию support. Добавьте в нужный вам файл Makefile.* из src/makefiles следующие строки: добавьте "-DSKEY" в макроопределение CFLAGS; добавьте "-lskey" в макроопределение LIBES; Это должно помочь, если нет, попросите помощи.
Посмотрите опцию 'deny-mail' в руководстве ftpaccess(5).
Обычно достаточно изменить строку для ftp сервера в файле /etc/inetd.conf (файл в котором определяется какие серверы запускются через inetd. Однако в некоторых операционных системах за это отвечает другой файл).
В последних версиях, если не задано никаких опций в командной строке, wuftpd запустится с опциями которые у него заданы по-умолчанию, в этом режиме он не анализирует конфигурацию из файла ftpaccess. Чтобы использовать конфигурацию из ftpaccess добавьте в командную строку опцию -a в файле inetd.conf.
Это может быть задано в командной строке или использую специальное переопределение в файлах /etc/services и /etc/inetd.conf. Для задания порта через командную строку ищите использование опции -P и -p в руководстве ftpaccess(5).
Или используйте специальные переопределения, добавьте 2-а порта в /etc/services (используйте не задействованные другими службами на вашей машине) и затем запустите wuftpd на этих портах (для примера посмотрите как определены порты для стандартного ftp). Вы можете попробовать так:
ftptest 4021/tcp #command port ftptest-data 4020/tcp #data portЗатем сделайте изменения в /etc/inetd.conf для запуска wuftpd :
ftptest stream tcp nowait root /usr/etc/in.ftpd in.ftpdпримеч.: Строка должна соответствовать вашей OS и конфигурации, это всего лишь пример.
Получено от W. James Showalter (gamma@mintaka.disa.mil)
Возможно что ваш демон inetd обрезает строку с большим списком параметров (4 или 5) В этом случае вы можете попытаться воспользваться следующей программой wrapper'ом:
/* wrapper for wuftpd to add command line arguments that don't fit under inetd */ #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <errno.h> #include <syslog.h> int main(argc,argv) int argc; char **argv; { char *path="/local-adm/bin/ftpd"; char *cmd="ftpd"; fflush(stderr); fflush(stdout); errno=0; execl(path,cmd,"-a","-l","-L","-u022",NULL); openlog("wrapftpd",LOG_PID, LOG_LOCAL6); syslog(LOG_WARNING,(const char *)strerror(errno)); closelog(); exit(EXIT_FAILURE); }Код от Albert Lunde (Albert-Lunde@nwu.edu)
Распакуйте этот файл в пустую директроию с именем WUFtpd250 Не заходя в эту директорию наберите 'pkgadd -d .' и получите на экран сообщение схожее с:
# pkgadd -d . The following packages are available: 1 WUFtpd250 wu-ftpd 2.5.0 SPARC/ULTRAsparc 2.5.1 - 2.5 (sun4c,sun4d,sun4e,sun4m,sun4u,sun4u1) 2.5.0 Select package(s) you wish to process (or 'all' to process all packages). (default: all) [?,??,q]:
Оригинальная версия wu-ftpd имела проблему представления 2000-ого года при разборе MDTM (время модификации файла). В этой версии не велось никаких работ по решению этой проблемы.
Эта проблема была решена в версии wu-ftpd 2.4.2 beta 14 реализованной в Августе 1997. После этой правки wu-ftpd считается полностью соответствующей Y2K.
Правка заключалась в следующем :
В ftpcmd.y было добавлено следующее (эта часть касается синтаксиса: MDTM check_login SP pathname CRLF)
reply(213, "19%02d%02d%02d%02d%02d%02d", t->tm_year, t->tm_mon+1, t->tm_mday, t->tm_hour, t->tm_min, t->tm_sec);19%02d необходимо было заменить на %04d и t->tm_year на t->tm_year + 1900:
reply(213, "%04d%02d%02d%02d%02d%02d", t->tm_year + 1900, t->tm_mon+1, t->tm_mday, t->tm_hour, t->tm_min, t->tm_sec);
Когда анонимный пользователь осуществляет вход, banner файлы открываются относительно "корня" структуры анонимного пользователя. Имейте это ввиду. Это нужно иметь ввиду в случае расположения banner'а или использования на него link'а.
Этот формат содержит параметры ДНЯ и ВРЕМЕНИ доступа. Возможные элементы: Sa,Su,Mo, ... Any (для любого дня). Например: SaSu|Any1800-0700 означает возможность круглосуточного доступа в Субботу и Воскресенье или с 18:00 по 07:00 во все остальные дни. Проверьте ftpd на правильность восприятия временной зоны.
Можно воспользоваться ftpcheck который находится на <URL:ftp://ftp.cle.ab.com/pub/ftpcheck.v2.3
Все счетчики и _максимально_количество_ в том числе, зависят от класса к которому относится пользователь, однако, до входа пользователя класс к которому он принадлежит, естественно еще не определен(с тех пор как wu-ftpd стал брать переменные realuser/anonymous/guestuser для вычисления класса пользователя).
Во первых, убедитесь что эти утилиты собраны статически и не требуют "shared" библиотек. Что касается GNU fileutils, их можно взять здесь: <URL:ftp://prep.ai.mit.edu/pub/gnu/fileutils-3.16.tar.gz> (номера версий могут отличаться).
Для разных операционных систем могут дополнительно требоваться различные библиотеки или устройства. Вы можете проверить это через "chroot" для домашней директории ftp. Например, проверить как в этом случае работает /bin/ls в ~ftp директории:
chroot ~ftp /bin/ls
Или, если партиция смонтирована с "-nosuid", что также приводит к подобной ошибке в таких системах как SunOS или Solaris, для уточнения смотрите страницу: <URL:http://www.stokely.com/stokely/sunservice.tips/11991.html>
Сначала почитайте руководства системы - man, оригинального in.ftpd(1m). Который должен содержать скрипт для полной установки ftp, посмотрите его через призму того как вы установили сами. Затем, если файловая система с ~ftp смонтирована с опцией "-nosuid" файлы специальных устройств работать не будут.
Solaris'у необходимо наличие файлов спец.устройств ~ftp/dev/tcp и ~ftp/dev/zero и дополнительных библиотек. Для получения более точной информации читайте системные руководства Solaris или используйте команду man command-name. Для определения библиотек необходимых для работы команд выполните команду ldd ls например и так далее. Также необходимо наличие файла ~ftp/etc/group для выполнения команды ls, без которого она не будет исполняться. Как и ~ftp/etc/group так и ~ftp/etc/passwd эти файлы должны содержать минимум информации необходимой лишь для работы ftp, те никаких строк из /etc/passwd для реальных пользователей и всего что может послужить хотя бы намеком на возможные проблемы security.
Обычно требуется включения следующих библиотек :
ld.so, ld.so.1, libc.so.1, libdl.so.1, libintl.so.1, libmp.so.1, libnsl.so.1,
libsocket.so.1, libw.so.1, nss_compat.so.1, nss_dns.so.1, nss_files.so.1,
nss_nis.so.1, nss_nisplus.so.1, straddr.so
Проблемы связанные с /etc/group описаны Eric (ewedaa@kset.com).
Решение этой проблемы обсуждалось в FAQ группы comp.unix.solaris: <URL:http://www.fwi.uva.nl/pub/solaris/solaris2> пункт 6.24 (на данный момент).
Воспользуйтесь командой ldd чтобы определить какие библиотеки используются этими командами. Кроме того в случае испоняемых модулей в ELF формате добавьте ELF загрузчик ld-linux.so в ~ftp/lib.
ELF изменения присланы Al Longyear (longyear@sii.com).
Скопируйте в ваше дерево ftp статическую версию ls (/sbin/ls) вместо
динамической, статическая имеет размер около 400K.
Создайте файлы passwd и group в ~ftp/etc. Скопируйте содержимое
/etc/sia в ~ftp/etc/sia это файлы matrixconf и
siainitgood.
SunOS требует наличия файлов ~ftp/dev/zero, ~ftp/dev/tcp и некоторых библиотек, действуйте в соответствие с man. И проверьте флаги доступа указанных выше файлов.
AIX поставляется со скриптом для автоматической установки.
AIX 3.2.5 - /usr/lpp/tcpip/samples/anon.ftp
AIX 4.1.4 - /usr/samples/tcpip/anon.ftp
После выполнения скрипта измените ражимы доступа к ~ftp/pub на безопасные.
Кроме того AIX поставляется с утилитой 'dump' с помощью которой можно посмотреть какие библиотеки использовались для сборки команды-программы.
Пояснения присланы Eilon Gishri (eilon@aristo.tau.ac.il)
Для IRIX 6.2 требуется наличие файла ~/ftp/dev/zero и библиотек. Перед созданием /dev/zero, проверьте его текущие номера major и minor :
ls -lL /dev/zeroИ создайте подобное устройство а ~ftp используя :
cd ~ftp/dev mknod zero c <major> <minor> cd .. chmod 555 devВозможно потребуется скопировать следующие библиотеки /lib/libc.so.1 в ~ftp/lib/libc.so.1 и /lib/rld в ~ftp/lib/rld. Они требуются для команд ls, compress, gtar и gzip.
Можно определить какие библиотеки нужны для этих програм:
csh# setenv _RLD_PATH /usr/lib/rld.debug csh# setenv _RLD_ARGS '-v -quickstart_info -stat'Для остановки просмотра достаточно установить переменные среды:
csh# unsetenv _RLD_PATH csh# unsetenv _RLD_ARGSПолную информацию по Irix можно найти в IRIX Insight Library (Online Books) в книге/глава "IRIX Admin: Networking and Mail" в параграфе "How to Set Up a Proper Anonymous FTP Account". Информация получена от Frans Stekelenburg (gjs@knmi.nl) and Jim Davis (jdavis@cs.arizona.edu)
SCO требует /dev/socksys.
Это совершенно некорректно по отношению к системе. Цитата : Проблема в том
что ls_short и ls_long были определены неверно (система была скомпилирована
BSD-вым компилятором с использованием BSD конфигурационного файла) используя
ls -lA и ls -lgA соответственно. Это привело к тому что команда ls работает
с ошибками (поскольку в данный момент операционка SVR4) и самое главное что
весь вывод ls направляет только в stderr и нет возможности посмотреть stdout.
просто Ноу Комментц
Информация от Perry A. Stupp (pstupp@i-com.com)
После апгрейда произошли изменения с вашей OS. Чаще всего: новые библиотеки
в том числе и shared. Также могли измениться major/minor номера устройств.
Пересмотрите ваши разделямые библиотеки и устройства если такое произошло
после апгрейда.
А лучше пересобирите wu-ftpd заново.
Wu-ftpd поставляется с прекрасными руководствами, man, которые содержат всю необходимую информацию по данному вопросу.
Тем не менее, стоит отметить что ряд особенностей связанный со сменой среды после chroot для анонимных пользователей применим и к guest.
Направление shutdown в файле ftpaccess указывает на существующий в настоящий момент файл. Либо измените направление, либо удалите файл для перехода из режима shutdown в рабочий режим.
В случае, если вы использовали команду ftpshut, необходимо помнить что для возобновления работы ftp демона необходимо удалить файл созданный ftpshut вручную.
Проверьте следующее :
Существует несколько возможных вариантов, большинство связано с отличием задания параметров командной строки для разных версий команды tar.
/bin/tar -cf - %s
, результат будет как в случае использования
/bin/tar -cvf - %s
. Опция -v
будет добавлять лишние
данные в поток. Решение : заменить на следующее /bin/tar cf - %s
без первого "-".
В случае использования Solaris 2.4 и GNU's tar-1.11.8 (сконфигурированным и скомпилированным с флагом --disable-nls) используйте флаг в GNU tar --use-compress-program=путь к программе сжатия
например :
: : :.tar.Z:/bin/ftp-exec/tar -c --use-compress-program=/bin/ftp-exec/compress -f - %s:T_REG|T_DIR:O_COMPRESS|O_TAR:TAR+COMPRESS
: : :.tar.gz:/bin/ftp-exec/tar -c --use-compress-program=/bin/ftp-exec/gzip -f - %s:T_REG|T_DIR:O_COMPRESS|O_TAR:TAR+GZIP
Да. Строки для файла ftpconversions такие :
:.zip: : :/bin/unzip -qq -p %s:T_REG|T_ASCII:O_UNCOMPRESS:UNZIP : : :.zip:/bin/zip -qq -r - %s:T_REG|T_DIR:O_COMPRESS|O_TAR:ZIPСам Info-ZIP можно найти на <URL:http://quest.jpl.nasa.gov/Info-ZIP/>
Создайте для этой цели соответствующий SHELL (например отредактировав под свои
цели /[usr/]bin/true[false]. Затем отразив это в соответствующих
изменениях /etc/shells. И последнее, после отладки заменить shell
пользователя на ваш.
Затем : убедитесь что пользователь не сможет каким-либо путем выполнить
из под этого account'а команды.Одна из проблем связана с работой sendmail.
Дополнительную информацию и скрипты можно найти на : <URL:http://www.landfield.com/wu-ftpd/ftponly/ftponly.html>
Возможно кто-то пытается использовать вашу машину для передачи _своих_данных_ (это в худшем случае). Проверьте наличие path-filter в файле ftpaccess, который должен выглядеть подобно :
path-filter anonymous /etc/paths.msg ^[-A-Za-z0-9\._]*$ ^\. ^-
В основном вы не можете этого сделать. Но, еслы вы настолько упрямы...
Прочтите upload.configuration.HOWTO, указатель на него в начале этого faq. Убедитесь что у вас установлена последняя версия wu-ftpd (2.5.0), установите ваш path-filter как указано выше. Посмотрите кто и какие имеет права доступа в директорию incoming и кто владелец, на предмет отличия от ftp (root или nobody), например :
drwx-wx-wt root nobody incomingВ данном примере разрешается записывать всем в эту директорию, но запрещается читать. Попробуйте установить upload в файле ftpaccess например такой :
upload /home/ftp /incoming yes root daemon 0400 nodirsОдно замечание : файлы будут создаваться как от владельца root и группы daemon следуя указанию в верхнем upload. Однако это может отрабатывать неверно на некоторых secure установленных NFS.
Соответствующая umask наследуется от inetd. Однако в этом случае возможна ошибка. Воспользуйтесь параметром задания umask с командной строки -u. Отредактируйте строку в inetd.conf подобно ftpd -A -L -l -u077.
В некоторых версиях Slackware переменная _PATH_EXECPATH была установлена в что-то похожее на /bin. Перекомпилируйте wu-ftpd установив специальный путь например, /bin/ftp-exec.
Для проверки этой дыры, наберите (когда зайдете как real пользователь, а не
anonymous) :
ftp> SITE EXEC bash -c id
Если в ответ получите '200-uid=0(root) gid=0(root)' , у вас проблемы с security.
Существует несколько готовых скриптов позоляющих создавать более удобные и понятные отчеты из файла статистики xferlog.
Koos van den Hout написал на Perl скрипты разбора статистики, отсылки по почте ежедневной статистики и аплоада и создания рейтинга наиболее популярных файлов. Доступен с <URL:ftp://ftp.cetis.hvu.nl/pub/koos/ftplogcheck>
iistat создает красивый граф на основе файла xferlog (и других ресурсов) Доступен с <URL:ftp://ftp.support.lotus.com/pub/utils/InternetServices/iisstat/iisstat.html>
Phil Swan написал xferstats, доступный с <URL:ftp://sod.off.net:211/pub/xferstats/xferstats-2.00/> or <URL:http://xferstats.off.net:8080>
Получаете ошибку подобную :
Dec 7 11:14:33 ftphost vmunix: NFS write error 13 on host fileserver fh 746 1 a0000 5fea7 3b5a1bd8 a0000 2 1e0a6aedЭто известная проблема. Установите последнюю версию wu-ftp, либо возможны следующие решения :
Очевидно ftpd требует доступа на запись к ~ftp/dev/tcp в случае работы в режиме
passive (Solaris). Установите для него те же права доступа что соответствует
системным полученным по команде ls -lL /dev/tcp
, должны быть 666.
Кроме того прочитайте соответствующие руководства Solaris.
Отличия от предыдущих версий
Fix:
cd ~ftp/dev chmod 666 tcpСпасибо Simon Rakov (Simon_Rakov@iongate.staff.ichange.com) за это дополнение.
Вероятно символьный линк относительно вашего active root. Если вы хотите иметь доступ к files/directories/diskspace внешним по отношению к вашей chroot среде, можно воспользоваться loopback mount'ом. Это можно делать в последних Solaris и Linux, для других OS читайте руководства.
Это малоизвестное значение ftpaccess : добавьте 'guestserver anon.ftp.server.hostname' в ваш ftpaccess файл...
Это зависит от inetd, а не ftpd. Inetd ограничивает количество обслуживаемых соединений к данному сервису производимых в минуту [в данном контексте число запускамых им дочерних процессов обслуживаемого сервиса. Некоторые версии позволяют изменять их количество непосредственно в inetd.conf, указывая их количество в парметре "nowait" :
ftp stream tcp nowait.256 root /usr/sbin/ftpd ftpd -aчто позволит производить 256 соединений в минуту. Смотрите "man inetd" для вашей системы.
Wu-ftpd разработан с учетом работы на машинах с большими архивами. Правки приведенные ниже включены по-умолчанию.
Например sunsite.doc.ic.ac.uk сделал несколько правок под себя доступных на : <URL:ftp://sunsite.doc.ic.ac.uk/packages/mirror/experimental/wu-2.4.2-upd13.shar>
Из примечаний к этим исправлениям:
DAEMON Если ftpd запускается с опцией -D как отдельный daemon который слушает ftp порт, то в этом случае скорость его ответов может возрасти поскольку для их обработки ему нужно запускать свою копию для обработки запроса через fork. В случае inetd новая копия запускается через вызов "exec". FILEWHAT Если SETPROCTITLE не работает или если у вас так много пользователей что для PS требуется много времени чтобы FILEWHAT сохранило информацию в файл которую ftpcount затем просто напечатал.
В настоящий момент это всего лишь ошибка старых ftp-клиентов которые посылают в качестве пароля первые 8-мь символов считая что он ограничен этим значением. Установите новый ftp-клиент.
В AIX 4.3 по-умолчанию в inetd.conf используется версия TCP/IP IPv6, которую wu-ftpd не поддерживает(пока). Исправьте протокол с tcp6 на tcp.
На данный момент это возможно лишь в случае на каждый IP-address по серверу. wu-ftpd 2.5.0 поддерживает эту возможность с большими ограничениями. Однако много полезных вещей BeroFTPD поддерживает гораздо шире и лучше, однако прочтите некоторые хитрости ниже.
Существует draft для расширения ftp протокола известного как HOST для поддержки виртуальных-хостов как в HTTP. Но, это всего лишь draft и масса старых клиентов не поддерживает его, поэтому не закладывайтесь на его широкое использование.
Вы пытались посмотреть системную статистику? В зависимости от настройки вашего syslog.conf все демоны должны выдавать сообщения об ошибках или на консоль или в системные логи. Попробуйте посмотреть, эта информация должна вам помочь. Наиболее распространенная ошибка, на данный момент, после апгрейда в системных логах syslog выдает 'not in any class'. Это означает что вы используете старую, ненадежную технологию определения классов, как например: class lcl real,guest,anonymous 127.*.*.* Последняя версия не поддерживает такое задание класса в целях безопасности. Используйте сетевую маску - NETMASK или блок - CIDR, как в примере: class lcl real,guest,anonymous 127.0.0.0/8 or class lcl real,guest,anonymous 127.0.0.0:255.0.0.0.
Смотрите документы RFC959 по протоколу FTP.
Существует коллекция Perl-скриптов под названием ftpmail. Она доступна на множестве ftp-машин (используйте archie или ftpsearch для поиска 'ftpmail'), некоторые изветсные :
<URL:ftp://sunsite.doc.ic.ac.uk/packages/ftpmail/>, nic.funet.fi, ftp.warwick.ac.uk, ftp.loria.fr, ftp.germany.eu.net.
Часть людей достойных заслуги :
Пошлите письмо по адресу (wuftpd-members@wu-ftpd.org)
Команда разработчиков предпочитает контекстные-отличия(сделанные diff) вместо последних версий исходного кода. Законченные файлы могут быть включены отдельно или как отличия context-diff.
Если ваш полный патч небольшой (меньше чем 25K) вы можете послать его почтой с которотким описанием изменений по адресу wuftpd-members@wu-ftpd.org.
Если ваши прваки или добавления большие (более 25K) или состоят из нескольких файлов, создайте сжатый архив (tar.gz или tar.Z) и положите в ftp://ftp.wu-ftpd.org/incoming после чего отправьте короткое описание правок с именем файла вашего дополнения-архива по адресу wuftpd-members@wu-ftpd.org.
Да, но вы должны быть уверены. Убедитесь что вы прочитали и поняли весь FAQ и документацию которая включена в дистрибутив. Если вы убеждены в проблеме связанной с безопасностью сервера, можете связаться с Gregory A Lundberg
1-800-809-2195 or 1-937-298-5254 (office) 1-888-977-5370 or 1-937-299-7653 (home) 1-937-299-8743 (FAX)