vsftpd - local_root = / var / www / sites / $ USER не интерпретируется?

11

Когда я пытаюсь подключиться к FTP-серверу, я получаю: «500 OOPS: невозможно изменить каталог: / home / $ USER / public_html»

  • когда я делаю echo $ USER - я получаю правильное имя пользователя
  • похоже, что $ USER не интерпретируется внутри моего /etc/vsftpd.conf
  • когда я удаляю "local_root = / var / www / sites / $ USER" у меня все работает нормально.

Я использую vsftpd 2.2.2 и Ubuntu 10.04.1 LTS Выпуск: 10.04 Кодовое имя: lucid

Pawel
источник

Ответы:

21

Вам нужно использовать комбинацию user_config_dir и local_root. В основном конфигурационном файле /etc/vsftpd/vsftp.conf у вас есть такая запись:

chroot_local_user=YES
user_config_dir=/etc/vsftpd/users

Внутри этого каталога (/ etc / vsftpd / users) у вас есть файл конфигурации с тем же именем, что и у пользователя ($ USER в вашем случае), а внутри этого файла у вас есть:

local_root=/var/www/sites/USER
dirlist_enable=YES
download_enable=YES
write_enable=YES

... где USER - фактическое имя (буквально не USER или $ USER).


источник
2
Важным этапом здесь является использование: user_sub_token=$USERэто заставляет исходную конфигурацию плаката работать, потому что переменная $ USER получает полезное значение. Смотрите мой комментарий в другом ответе.
user3450548
5

Вы должны установить user_sub_token:

user_sub_token=$USER
local_root=/var/www/sites/$USER
Михаэль Витрант
источник
2
Забавно, что это реальное реальное решение, то, что хотел сделать оригинальный постер, действительно применимо. Вы можете использовать это также в другом предложенном примере, но вам не нужно обязательно включать user_config_dir. Вы можете сделать это или нет, в зависимости от вашего вкуса. Важный проход здесь user_sub_token=$USER, потому что это тот, кто заполняет $USERпеременную чем-то полезным внутри conf. См. user_sub_tokenОписание на странице руководства : «Этот параметр также вступает в силу, если local_root содержит user_sub_token».
user3450548