Виртуальные пользователи в VsFTPD под Ubuntu/Debian
Ставим необходимые компоненты:
apt-get install libpam-pwdfile vsftpd apache2-utils
Предположим, что сайтики лежат в /srv/www/mysite.ru/htdocs , соответственно ограничиваем пользователя доступом в корневую директорию.
Чистим дефолтный конфиг vsftpd
mv /etc/vsftpd.conf /etc/vsftpd.conf_bak
И записываем туда вот что:
listen=YES anonymous_enable=NO local_enable=YES write_enable=YES local_umask=022 nopriv_user=vsftpd virtual_use_local_privs=YES guest_enable=YES user_sub_token=$USER local_root=/srv/www/$USER chroot_local_user=YES hide_ids=YES chown_uploads=YES chown_username=vsftpd guest_enable=YES guest_username=vsftpd chown_upload_mode=0775 use_localtime=YES xferlog_enable=YES xferlog_file=/var/log/vsftpd.log xferlog_std_format=YES dirmessage_enable=YES ascii_upload_enable=YES ascii_download_enable=YES ftpd_banner=Welcome developer to WWW server! ls_recurse_enable=YES secure_chroot_dir=/var/run/vsftpd/empty pasv_enable=YES pasv_min_port=62000 pasv_max_port=64000
Создаем пользователя vsftpd (системным без шела)
useradd -M -r vsftpd
Далее надо настроить pam-аутентификацию.
Для этого открываем файлик /etc/pam.d/vsftpd, комментим всё и добавляем туда две строчки:
auth required pam_pwdfile.so pwdfile /etc/ftpdpasswd account required pam_permit.so
Теперь создаем файлик /etc/ftpdpasswd:
touch /etc/ftpdpasswd htpasswd -c /etc/ftpdpasswd
Добавление пользователя осуществляется аналогично, только без опции -с и с названием корневой директории сайта в качестве пользователя:
htpasswd /etc/ftpdpasswd www.mysite.ru
Если возникает ошибка cannot change directory Надо дать права на исполнение для директории /home/vsftpd/ и для директории заданной в файле /etc/vsftpd.conf параметром local_root=:
setfacl -m u:vsftpd:x /home/vsftpd/ setfacl -m u:vsftpd:xrw /mnt/shared/new/XenApp/
Ребутим vsftpd и радуемся..
Discussion
guest_username=vsftpd chown_uploads=YES chown_username=www-data guest_enable=YES guest_username=www-data
нет ли здесь какого то подвоха?
О, да!
fixed!