16 июн. 2000 г.

Настройка vsftpd на Ubuntu

Настройка vsftpd на Ubuntu

14 Январь 2011

Ставим пакет:
sudo aptitude install vsftpd
Собственно, после установки в Ubintu vsftpd сразу работает и можно подключаться к ftp с локальной учетной записью. Правда доступ открыт только для чтения. Чтобы открыть доступ на запись в файле
sudo nano /etc/vsftpd.conf
укажем следующие параметры:
write_enable=YES
chroot_local_user=YES
Первый разрешает запись, а второй ограничивает пользователя его собственной директорией.

После внесения изменений перезагружаем сервис:
sudo service vsftpd restart
В Ubuntu пользователь ftp уже создан в системе с директорией по умолчанию — /srv/ftp.
Конфигурация для анонимного доступа с режимом только чтение
anonymous_enable=YES
В этом случае файлы доступны в папке /srv/ftp
Конфигурация для анонимного доступа с режимом на запись и чтение
Для возможности записи нужно создать отдельную папку (для скачивания по желанию). Права на папку /srv/ftp переназначать нельзя поскольку vsftpd будет ругаться на недостаточные настройки безопасности, поэтому создаем дополнительные папки (можно и одну, но лучше разграничить):
mkdir /srv/ftp/income
chown root:mygroup /srv/ftp/income
chmod 775 /srv/ftp/income
mkdir /srv/ftp/pub
chown root:mygroup /srv/ftp/pub
chmod 773 /srv/ftp/pub
Далее меняем параметры в файле  vsftpd.conf
anon_upload_enable=YES
При данной конфигурации анонимные пользователи могут загружать файлы в папку income, но не могут просматривать ее.
По другим параметрам достаточно справки man (если с английским не очень дружно, то есть перевод на OpenNET, который я привел в конце статьи). Например, параметр anon_mkdir_write_enable=YES позволяет создавать папки на сервере, но для этого потребуется открыть доступ на чтение к папке income, поскольку иначе пользователь только что созданную папку не увидит.
Конфигурация vsftpd с виртуальными пользователями + pam_passwd
Для того, чтобы организовать доступ виртуальным пользователям нужен набор библиотек PAM и один из дополнительных модулей для хранения базы пользователей и паролей. Для большого количества пользователей будет необходима база данных, а дома можно обойтись модулем pam_passwd. Приступим:
sudo aptitude install libpam-pwdfile
Теперь нужно создать файл для паролей. Можно воспользоваться утилитой chpwdfile, создатель которой потерялся, но исходники еще можно найти на просторах сети. Но проще использовать утилиту Apache htpasswd, тем более что сам Apache для этого не требуется, а достаточно установить apache2-utils с парой библиотек.
sudo aptitude intsall apache2-utils
sudo touch /etc/vsftpd-passwd
sudo htpasswd /etc/vsftpd-passwd ftpuser
sudo cp /etc/pam.d/vsftpd /etc/pam.d/vsftpd.orig
sudo nano /etc/pam.d/vsftpd
Отредактируйте файл, так чтобы остались следующие строчки:
auth    required        pam_listfile.so item=user sense=deny file=/etc/ftpusers onerr=succeed
auth    required        pam_pwdfile.so pwdfile /etc/vsftpd-passwd
aсcount      required        pam_permit.so
И, наконец, если будем использовать одну директорию для ftp вносим в файл /etc/vsftpd.conf следующие строчки:
guest_enable=YES
guest_username=ftp
local_root=/srv/ftp
virtual_use_local_privs=YES
hide_ids=YES
Для того, чтобы появилась возможность записи в эту директорию, нужно добавить права и изменить владельца группы — vsftpd уже не будет ругаться на недостаточную безопасность. Но лучше всего использовать все те же папки pub и income с возможностью записи в них для пользователя ftp.
Если для каждого виртуального пользователя нужен собственный каталог, то добавляем/изменяем в файле /etc/vsftpd.conf
user_sub_token=$USER
local_root=/home/virtual/$USER
Естественно, в /home/virtual/ нужно создать каталоги в соответствии с именами пользователей и назначить для них владельцем пользователя ftp.
Если база пользователей большая и ее лучше хранить в базе данных, то в сети есть примеры как организовать хранение виртуальных пользователей в MySQL или Berkeley DB.
Использованные материалы:
http://vsftpd.beasts.org/
http://viki.brainsware.org/?en/Home
http://www.opennet.ru/base/net/vsftpd_overview.txt.html