vsftpd - local_root = / var / www / sites / $ USER não é interpretado?

11

Quando estou tentando me conectar ao servidor FTP, recebo: "500 OOPS: não é possível alterar o diretório: / home / $ USER / public_html"

  • quando echo $ USER - recebo o nome de usuário adequado
  • parece que $ USER não é interpretado dentro do meu /etc/vsftpd.conf
  • quando eu removo "local_root = / var / www / sites / $ USER" Tudo está funcionando perfeitamente.

Estou executando o vsftpd 2.2.2 e o Ubuntu 10.04.1 LTS Release: 10.04 Nome de código: lucid

Pawel
fonte

Respostas:

21

O que você precisa usar é uma combinação de user_config_dir e local_root. No arquivo de configuração principal /etc/vsftpd/vsftp.conf, você tem uma entrada como:

chroot_local_user=YES
user_config_dir=/etc/vsftpd/users

Dentro desse diretório (/ etc / vsftpd / users), você tem um arquivo de configuração com o mesmo nome que o usuário ($ USER no seu caso) e dentro desse arquivo você tem:

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

... onde USER é o nome real (não literalmente USER ou $ USER).


fonte
2
A passagem importante aqui é use user_sub_token=$USER:, isso faz com que a configuração original do pôster funcione porque a variável $ USER obtém um valor utilizável. Veja meu comentário na outra resposta.
user3450548
5

Você deve definir user_sub_token:

user_sub_token=$USER
local_root=/var/www/sites/$USER
Michaël Witrant
fonte
2
Engraçado que essa é a solução real, o que o pôster original queria fazer era realmente aplicável. Você também pode usá-lo no outro exemplo proposto, mas não é necessário habilitá-lo user_config_dir. Você pode fazê-lo ou não, dependendo do seu gosto. O passo importante aqui é user_sub_token=$USER, porque é esse quem preenche o $USERvar com algo útil dentro do conf. Veja a user_sub_tokendescrição na página do manual: "Esta opção também afeta se local_root contiver user_sub_token."
user3450548