9

When I'm trying to connect to FTP server I get: "500 OOPS: cannot change directory:/home/$USER/public_html"

  • when I do echo $USER - I get proper username
  • seems like $USER isn't interpreted inside my /etc/vsftpd.conf
  • when I remove "local_root=/var/www/sites/$USER" I everything is smoothly working.

I'm running vsftpd 2.2.2 and Ubuntu 10.04.1 LTS Release: 10.04 Codename: lucid

19

What you need to use is a combo of user_config_dir and local_root. In the main config file /etc/vsftpd/vsftp.conf you have an entry like:

chroot_local_user=YES
user_config_dir=/etc/vsftpd/users

Inside that directory (/etc/vsftpd/users) you have a config file with the same name as the user ($USER in your case), and inside that file you have:

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

...where USER is the actual name (not literally USER or $USER).

  • The important pass here is use: user_sub_token=$USER, this makes the original poster configuration functioning because $USER variable get an usable value. See my comment in the other answer. – user3450548 Dec 11 '18 at 9:51
3

You must set user_sub_token:

user_sub_token=$USER
local_root=/var/www/sites/$USER
  • Fun that this is the actual real solution, what the original poster wanted to do was actually applicable. You can use it also in the other proposed example, but you don't need necessarly to enable user_config_dir. You can do it or you could not, depending on your taste. The important pass here is user_sub_token=$USER, because this is the one who fills the $USER var with something usable inside the conf. See the user_sub_token description in man page: "This option also takes affect if local_root contains user_sub_token." – user3450548 Dec 11 '18 at 9:50

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.