Теперь опишу причины, по которым я выбрал именно vsftpd:
Код: Выделить всё
1. Простой и удобный файл конфигурации с отличной документацией в man vsftpd.conf.
2. Виртуальные пользователи. Отлично работает, хотя мне это пока не нужно, но кто знает.
3. Мощнейшее управление пользователями.
4. Интеграция с SSL. (Еще предстоит настроить)
5. Поддержка перекодировок. Можно прописывать для каждого пользователя отдельно.
6. Возможность задавать правила доступа для анонимных пользователей.
Шаг 1. Установка. (Gentoo Linux)
Скачиваем архив с ebuild'ом vsftpd-2.0.5e.
Распаковываем содержимое в свой overlay, у меня это /usr/overlay/portage. Далее скачиваем сам vsftpd и кладём в /usr/portage/distfiles/.
После того как все это сделано, набираем emerge vsftpd.
В Gentoo Linux пользователь ftp создаётся автоматически с домашней директорией в /home/ftp. Если у вас не Gentoo Linux, то вам надо выполнить следующее:
Код: Выделить всё
# useradd nobody
# mkdir /home/ftp
# useradd -d /home/ftp ftp
# chown root.root /home/ftp
# chmod og-w /home/ftp
Шаг 2. Настройка.
Сначала нужно определиться что нам нужно от сервера. Лично мне нужно было, пускать анонимусов с правом записи в /home/ftp/incomming и чтением всего остального. Далее пускать только определенных локальных пользователей в определенные директории. Для анонимусов, т.к. они все у меня пользуются виндовсом, сделать перекодировку utf8(сервер)<->cp1251(клиент), для остальных пользователей перекодировку не делать.
Конфигурационный файл сервера находится в /etc/vsftpd/vsftpd.conf.
Код:
listen=YES #запускается без использования xinetd.
listen_address=172.16.23.125 #привязка к ip и порту.
listen_port=30005
anonymous_enable=YES #разрешаем вход анонимусам.
local_enable=YES #разрешаем вход локальным пользователям.
write_enable=YES #разрешаем выполнение команд STOR, DELE, RNFR, RNTO, MKD, RMD, APPE and SITE.
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES #даем анонимусам право записи и т.п.
dirmessage_enable=YES #показывать сообщение при первом входе в каталог.
connect_from_port_20=YES
chown_uploads=YES #изменять владельца загуржаемых файлов
chown_username=ftpserg #собственно указывается новый владелец
xferlog_enable=YES
xferlog_file=/var/log/vsftpd.log
idle_session_timeout=600
data_connection_timeout=120
nopriv_user=nobody
ascii_upload_enable=NO
ascii_download_enable=NO
ftpd_banner=Welcome to CrazyNetwork FTP server.
convert_charset_enable=YES #включаем перекодировку
local_charset=UTF8 #локаль сервера
remote_charset=WIN1251 #локаль клиента
user_config_dir=/etc/vsftpd/vusers #указываем директорию с конфигурациями наших пользователей
chroot_local_user=YES #чрутим локальных пользователей в их домашний каталог
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
userlist_file=/etc/vsftpd/user_list #список пользователей которым позволено подключаться к серверу
userlist_enable=YES # сами
userlist_deny=NO # правила
В /etc/vsftpd/user_list прописываем имена пользователей, которым будет разрешено подключаться к серверу, каждое имя с новой строки, анонимуса и ftp тоже следует вписать
Сейчас у нас сервер настроен на допуск пользователей из списка с перекодировкой utf8<->cp1251. Для пользователя ftpserg отключим перекодировку. Для этого создаём файл: /etc/vsftpd/vusers/ftpserg и прописываем туда строку:
Код: Выделить всё
convert_charset_enable=NO
Если этого пользователя надо чрутнуть не в /home/ftp, а наример в /var/www/mysite.com/, то в этот же файл пишем следующее:
Код: Выделить всё
local_root=/var/www/mysite.com/
Да, еще нужно правильно выставить правда на содержимое вашего ftp-сервера. Чтобы анонимусы могли писать в incomming на это папку следует поставить права 777 или 773, кому как нравится
Шаг 3. Запуск.
Код: Выделить всё
/etc/init.d/vsftpd start
И все, радуемся жизни
P.S. Замечания и дополнения приветствуются.
Оригинал тут.