vsftpd (very secure ftp daemon) — популярный ftp-сервер, при разработке которого во главу угла была поставлена безопасность. Установка не вызывает никакой сложности: emerge vsftpd Для запуска в standalone-режиме добавим скрипт vsftpd в runlevel «default»: rc-update add vsftpd default И в конфигурационный файл /etc/vsftpd/vsftpd.conf добавляем listen=YES background=YES Корневой каталог — /home/ftp, если желаете хранить файлы в другом месте, то необходимо делать связывание (обычные симлинки работать не будут): mount --bind <где лежат файлы> /home/ftp У меня эта строка добавлена в /etc/conf.d/local.start Виртуальные пользователи Будем использовать pam_userdb для аутентификации виртуальных пользователей. Для этого должна быть установлена программа для работы с БД Берклиевского формата (emerge db). Создадим обычный текстовый файл logins.txt, в котором в одной строке написано имя пользователя, а в другой — пароль. Для пользователей tom (пароль foo) и fred (пароль bar) он выглядит так: tom foo fred bar Создаем базу данных пользователей: db_load -T -t hash -f logins.txt /etc/vsftpd/vsftpd_login.db Возможно у вас не получится, потому что в некоторых дистрибутивах (в том числе и в Gentoo) в имя программы включается ее версия, поэтому у меня это выглядит так: db4.1_load -T -t hash -f logins.txt /etc/vsftpd/vsftpd_login.db Для большей безопасности выставим права на этот файл 600 В /etc/pam.d/vsftpd пишем 2 строки (других строк не надо): auth required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login account required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login Создадим локального пользователя virtual, на которого будут «отображаться» виртуальные пользователи: useradd -d /home/ftp virtual В vsftpd.conf пишемlocal_enable=YES chroot_local_user=YES guest_enable=YES guest_username=virtual user_config_dir=/etc/vsftpd/vsftpd_user_conf Последняя строка указывает каталог, в котором хранятся файлы конфигураций для каждого виртуального пользователя. Следует заметить, что если virtual_use_local_privs=NO (а для большей безопасности так и должно быть), то для виртуальных пользователей надо писать директивы anonymous'а (к примеру для ограничения скорости должно быть anon_max_rate, а не local_max_rate) upload Создадим каталог /home/ftp/upload с правами 773 (чтобы была возможность писать, но нельзя было прочитать). Конфигурационный файл пользователя upload # Каталог для аплоадных файлов local_root=upload # Разрешено писать write_enable=YES # Разрешено создавать подкаталоги anon_mkdir_write_enable=YES # Разрешен аплоад anon_upload_enable=YES # Хозяином аплоадных файлов автоматически становится heal (в vsftpd.conf?) chown_uploads=YES chown_username=heal |