Настройка vsftpd на Ubuntu
Ставим пакет:
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Далее меняем параметры в файле vsftpd.conf
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
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И, наконец, если будем использовать одну директорию для ftp вносим в файл /etc/vsftpd.conf следующие строчки:
auth required pam_pwdfile.so pwdfile /etc/vsftpd-passwd
aсcount required pam_permit.so
guest_enable=YESДля того, чтобы появилась возможность записи в эту директорию, нужно добавить права и изменить владельца группы — vsftpd уже не будет ругаться на недостаточную безопасность. Но лучше всего использовать все те же папки pub и income с возможностью записи в них для пользователя ftp.
guest_username=ftp
local_root=/srv/ftp
virtual_use_local_privs=YES
hide_ids=YES
Если для каждого виртуального пользователя нужен собственный каталог, то добавляем/изменяем в файле /etc/vsftpd.conf
user_sub_token=$USERЕстественно, в /home/virtual/ нужно создать каталоги в соответствии с именами пользователей и назначить для них владельцем пользователя ftp.
local_root=/home/virtual/$USER
Если база пользователей большая и ее лучше хранить в базе данных, то в сети есть примеры как организовать хранение виртуальных пользователей в MySQL или Berkeley DB.
Использованные материалы:
http://vsftpd.beasts.org/
http://viki.brainsware.org/?en/Home
http://www.opennet.ru/base/net/vsftpd_overview.txt.html