Назад | Перейти на главную страницу

Можно ли настроить vsftpd для настройки произвольных chroot для каждого виртуального пользователя

В идеале я бы хотел что-то вроде способности 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 / по мере необходимости.