В идеале я бы хотел что-то вроде способности proftpds для этого
DefaultRoot /var/www/whatever/userone/ user1
DefaultRoot /home/directory/whatever/ user2
Важно, чтобы это было для виртуальных пользователей.
Это очень легко сделать с помощью PAM.
Если ваш disto не поставляется с PAM, вам необходимо получить копию, поскольку vsftpd использует PAM для аутентификации виртуальных пользователей.
Уже доступен пакет debian для pam_pwdfile, в качестве альтернативы загрузите и скомпилируйте его, если ваша копия linux еще не поставляется с ним:
apt-get install libpam-pwdfile
Сначала создайте файл паролей для первого пользователя:
htpasswd -c /etc/vsftpd/passwd user1
А потом:
htpasswd /etc/vsftpd/passwd user2
Далее вам нужно отредактировать файл конфигурации vsftpd /etc/vsftpd.conf
listen=YES
anonymous_enable=NO
local_enable=YES
virtual_use_local_privs=YES
write_enable=YES
connect_from_port_20=YES
secure_chroot_dir=/var/run/vsftpd
pam_service_name=vsftpd
guest_enable=YES
user_sub_token=$USER
local_root=/var/www/sites/$USER
chroot_local_user=YES
hide_ids=YES
Наконец, вам нужно настроить PAM для использования файла паролей, поэтому отредактируйте /etc/pam.d/vsftpd
# Customized login using htpasswd file
auth required pam_pwdfile.so pwdfile /etc/vsftpd/passwd
account required pam_permit.so
Не забудьте перезапустить vsftpd, и все готово!
Да, это возможно, смотрите мой пост здесь:
vsftpd - local_root = / var / www / sites / $ USER не интерпретируется?
Вам необходимо использовать файлы конфигурации для каждого пользователя, чтобы указать для них уникальное расположение chroot. В вашем случае конфигурация «local_root» для каждого пользователя будет иметь разные значения за пределами / var / www / sites / по мере необходимости.