I recently setup an Ubuntu 18.04 webserver to test webpages locally. I used tasksel to quickly install the LAMP server role as follows:
sudo apt update sudo apt install tasksel sudo tasksel install lamp-server
With the webserver up and running I needed to be able to FTP into the var/www/html directories to upload my HTML and CSS.
As Ubuntu server comes with SSH installed be default I decided to use that for FTP instead of installing something like vsftd (Very Secure FTP Daemon). FTP over SSH turned out to be a much simpler and quicker setup.
Warning: These steps do not restrict access to folders outside of the /var/www/html directories. As such this setup is not recommended for any kind of production server.
First create a new directory under /var/www/html:
cd /var/www/html sudo mk dir newdirectory
Create a new user and give the user a password:
sudo adduser ftpuser sudo passwd ftpuser
Finally give the new user the permissions that they need. Change the directory ownership and group:
sudo chown www-data:www-data /var/www/html/newdirectory
Give the group write permissions to the directory:
sudo chmod -R 775 /var/www/html/newdirectory
Add the new user to the www-data group:
sudo usermod -a -G www-data ftpuser
With this done I configured FileZilla to establish a secure FTP connection to my webserver.