vsftpd - lokalny katalog_główny = / var / www / sites / $ USER nie jest interpretowany?

11

Kiedy próbuję połączyć się z serwerem FTP, pojawia się komunikat: „500 OOPS: nie można zmienić katalogu: / home / $ USER / public_html”

  • kiedy powtórzę echo $ USER - dostaję prawidłową nazwę użytkownika
  • wygląda na to, że $ USER nie jest interpretowany w moim /etc/vsftpd.conf
  • kiedy usuwam "local_root = / var / www / sites / $ USER" I wszystko działa płynnie.

Korzystam z wersji vsftpd 2.2.2 i Ubuntu 10.04.1 LTS Release: 10.04 Codename: lucid

Paweł
źródło

Odpowiedzi:

21

To, czego potrzebujesz, to połączenie katalogu user_config_dir i local_root. W głównym pliku konfiguracyjnym /etc/vsftpd/vsftp.conf masz wpis:

chroot_local_user=YES
user_config_dir=/etc/vsftpd/users

W tym katalogu (/ etc / vsftpd / users) znajduje się plik konfiguracyjny o tej samej nazwie co użytkownik (w twoim przypadku $ USER), a wewnątrz tego pliku masz:

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

... gdzie USER to rzeczywista nazwa (nie dosłownie USER lub $ USER).


źródło
2
Ważne jest tutaj użycie: user_sub_token=$USERpowoduje to, że oryginalna konfiguracja plakatu działa, ponieważ zmienna $ USER otrzymuje użyteczną wartość. Zobacz mój komentarz w drugiej odpowiedzi.
user3450548,
5

Musisz ustawić user_sub_token:

user_sub_token=$USER
local_root=/var/www/sites/$USER
Michaël Witrant
źródło
2
To zabawne, że to jest prawdziwe prawdziwe rozwiązanie, to, co chciał zrobić oryginalny plakat, faktycznie miało zastosowanie. Możesz użyć go również w innym proponowanym przykładzie, ale nie musisz koniecznie włączać user_config_dir. Możesz to zrobić lub nie, w zależności od upodobań. Ważna jest tutaj przepustka user_sub_token=$USER, ponieważ to ona wypełnia $USERvar czymś użytecznym w konf. Zobacz user_sub_tokenopis na stronie podręcznika : „Ta opcja ma również wpływ, jeśli local_root zawiera user_sub_token.”
user3450548,