This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| ftp-install [2020/10/26 16:04] – gwsadmin | ftp-install [2023/05/17 22:52] (current) – external edit 127.0.0.1 | ||
|---|---|---|---|
| Line 4: | Line 4: | ||
| <code language-bash> | <code language-bash> | ||
| - | 'sudo apt update && sudo apt install vsftpd | + | sudo apt update && sudo apt install vsftpd |
| </ | </ | ||
| + | |||
| * Once installed check status | * Once installed check status | ||
| Line 21: | Line 23: | ||
| Apr 27 19:35:30 ubuntu systemd[1]: Starting vsftpd FTP server... | Apr 27 19:35:30 ubuntu systemd[1]: Starting vsftpd FTP server... | ||
| Apr 27 19:35:30 ubuntu systemd[1]: Started vsftpd FTP server.' | Apr 27 19:35:30 ubuntu systemd[1]: Started vsftpd FTP server.' | ||
| + | |||
| </ | </ | ||
| + | |||
| * Configure Firewall | * Configure Firewall | ||
| Line 30: | Line 34: | ||
| sudo ufw allow 40000: | sudo ufw allow 40000: | ||
| sudo ufw allow 990/tcp | sudo ufw allow 990/tcp | ||
| + | |||
| </ | </ | ||
| + | |||
| * Add FTP user | * Add FTP user | ||
| <code language-bash> | <code language-bash> | ||
| sudo adduser ftpuser | sudo adduser ftpuser | ||
| + | |||
| </ | </ | ||
| + | |||
| * Add the user to the webserver root directory | * Add the user to the webserver root directory | ||
| <code language-bash> | <code language-bash> | ||
| sudo usermod -d /var/www ftpuser | sudo usermod -d /var/www ftpuser | ||
| + | |||
| </ | </ | ||
| + | |||
| * Allow ftp user to write and alter documents in the web directory | * Allow ftp user to write and alter documents in the web directory | ||
| <code language-bash> | <code language-bash> | ||
| sudo chown ftpuser: | sudo chown ftpuser: | ||
| + | |||
| </ | </ | ||
| + | |||
| ==== Configure vsftpd ==== | ==== Configure vsftpd ==== | ||
| Line 56: | Line 68: | ||
| <code language-bash> | <code language-bash> | ||
| sudo mv / | sudo mv / | ||
| + | |||
| </ | </ | ||
| + | |||
| * Create a new config file | * Create a new config file | ||
| <code language-bash> | <code language-bash> | ||
| sudo nano / | sudo nano / | ||
| + | |||
| </ | </ | ||
| + | |||
| * Paste in the following | * Paste in the following | ||
| - | < | + | < |
| - | 'listen=NO | + | listen=NO |
| listen_ipv6=YES | listen_ipv6=YES | ||
| anonymous_enable=NO | anonymous_enable=NO | ||
| Line 83: | Line 99: | ||
| pasv_min_port=40000 | pasv_min_port=40000 | ||
| pasv_max_port=50000 | pasv_max_port=50000 | ||
| + | allow_writeable_chroot=YES | ||
| </ | </ | ||
| + | |||
| * Save the file | * Save the file | ||
| * Restart vsftpd | * Restart vsftpd | ||
| - | < | + | <code language-bash> |
| - | '' | + | sudo systemctl restart vsftpd |
| </ | </ | ||
| + | |||
| + | Now, if this was purely to just upload files we can stop here, however, normally you want to FTP a site that is for the web, so we need to be able to have the FTP user/group work in tandem with the www-data user/group. | ||
| + | |||
| + | So, here is what is needed: | ||
| + | |||
| + | * Create a new group (www-pub) and add the users to that group | ||
| + | |||
| + | <code bash> | ||
| + | sudo groupadd www-pub | ||
| + | |||
| + | |||
| + | </ | ||
| + | |||
| + | * Add FTP user AND www-data to the group | ||
| + | |||
| + | <code bash> | ||
| + | usermod -a -G www-pub ftpuser | ||
| + | |||
| + | usermod -a -G www-pub www-data | ||
| + | |||
| + | |||
| + | </ | ||
| + | |||
| + | * Check that the users are part of all groups | ||
| + | |||
| + | <code bash> | ||
| + | sudo groups ftpuser | ||
| + | |||
| + | sudo groups www-data | ||
| + | |||
| + | |||
| + | </ | ||
| + | |||
| + | * Change ownership of everything under the web directory | ||
| + | |||
| + | <code bash> | ||
| + | sudo chown -R root: | ||
| + | |||
| + | |||
| + | </ | ||
| + | |||
| + | * Then change the permissions (or certain web sites won't work - such as NextCloud or WHMCS) | ||
| + | |||
| + | <code bash> | ||
| + | sudo chmod 2775 / | ||
| + | |||
| + | |||
| + | </ | ||
| + | |||
| + | * In detail, this is what each number is doing:// | ||
| + | |||
| + | **Then you should be able to FTP to a site without changing permissions all over the place!** | ||