How to change default ftp directory?

94,198

Solution 1

The ftp directory defaults to the user's HOME directory, so the easiest way to achieve your goal is to create a new user and set his HOME directory to /var/www/myApplication:

usermod -d /var/www/myApplication/ exampleuser

If you want to restrict the access to this directory you need to set

chroot_local_user=YES

in your vsftpd.conf. Then restart the vsftpd service with:

service vsftpd restart

See Unix & Linux: How to create a FTP user with specific /dir/ access only on a Centos / linux installation


There may be an even simpler way, see here:

To change the default login directory for vsftpd, change the ftp user home directory in /etc/passwd: ftp:x:116:116:vsftpd daemon:/var/vsftpd:/bin/false

The ftp user (userID=116) home directory changed to /var/vsftpd. This will allow the default/anonymous/unknown user to land into a specific place(/var/vsftpd).

Solution 2

I am not really sure how you went about setting this up, but you need to install vsftpd.

Steps:

  1. Install vsftpd:

    sudo apt-get install vsftpd
    
  2. Make backup of vsftpd.conf:

    sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.orig
    
  3. Setup firewall rules:

    sudo ufw allow 20/tcp
    sudo ufw allow 21/tcp
    sudo ufw allow 990/tcp
    sudo ufw allow 40000:50000/tcp
    sudo ufw status
    
    • Don't have firewall, then install:

      • sudo apt-get install ufw
      • Enable: sudo ufw enabe
  4. Create a user and make the home directory this /var/www/ftp/myApplication

    • create an additional folder called ftp as seen above in case you need to add more folders for other users.
    • Create user:

      sudo usermod -d /var/www/ftp/myApplication ftpuser
      
  5. Set its ownership, and be sure to remove write permissions with the following commands

    sudo chown nobody:nogroup /var/www/ftp
    sudo chmod a-w /var/www/ftp
    
  6. Assign ownership to the myApplication foler to user ftpuser

    sudo chown ftpuser:ftpuser /var/www/ftp/myApplication
    
  7. Setup /etc/vsftpd.conf add the following configurations:

    # Allow anonymous FTP? (Disabled by default).
    anonymous_enable=NO
    #
    # Uncomment this to allow local users to log in.
    local_enable=YES
    write_enable=YES
    
    # Prevent the FTP-connected user from accessing any files or commands outside 
    # the directory tree
    chroot_local_user=YES
    
    # Add a user_sub_token in order to insert the username in our local_root directory 
    # path so our configuration will work for this user and any future users that might 
    # be added
    
    user_sub_token=$USER
    local_root=/var/www/ftp
    
    # Set up the configuration so that access is given to a user only when they 
    # are explicitly added to a list rather than by default
    userlist_enable=YES
    userlist_file=/etc/vsftpd.userlist
    userlist_deny=NO
    
  8. Create and add user to the user_list:

    echo "ftpuser" | sudo tee -a /etc/vsftpd.userlist
    
  9. Restart daemon to load new configurations:

    sudo systemctl restart vsftpd
    

Source(s):

https://www.digitalocean.com/community/tutorials/how-to-set-up-vsftpd-for-a-user-s-directory-on-ubuntu-16-04

Share:
94,198

Related videos on Youtube

Mr world wide
Author by

Mr world wide

Updated on September 18, 2022

Comments

  • Mr world wide
    Mr world wide over 1 year

    When I connect with FTP using a pem file it is connecting fine and by default, it is showing this directory: /home/ubuntu

    Now I am trying to change the /home/ubuntu directory to /var/www/myApplication. I am new to Linux can anyone tell which commands I need to use?

    And how can I see the default ftp path there is no vsftpd folder/files in my /etc folder?