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:02] – gwsadmin | ftp-install [2023/05/17 22:52] (current) – external edit 127.0.0.1 | ||
---|---|---|---|
Line 1: | Line 1: | ||
====== How to install an FTP Server ====== | ====== How to install an FTP Server ====== | ||
- | Install vsftpd | + | * Install vsftpd |
<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 |
<code pre-only> | <code pre-only> | ||
Line 27: | Line 27: | ||
</ | </ | ||
- | Congigue | + | * Configure |
<code language-bash> | <code language-bash> | ||
Line 38: | Line 38: | ||
</ | </ | ||
- | Add FTP user | + | * Add FTP user |
<code language-bash> | <code language-bash> | ||
Line 46: | Line 46: | ||
</ | </ | ||
- | Add the user to the webserver root directory | + | * Add the user to the webserver root directory |
<code language-bash> | <code language-bash> | ||
Line 54: | Line 54: | ||
</ | </ | ||
- | 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> | ||
Line 62: | Line 62: | ||
</ | </ | ||
- | Configure vsftpd | + | ==== Configure vsftpd |
- | Rename config file | + | * Rename config file |
<code language-bash> | <code language-bash> | ||
- | '' | + | sudo mv / |
</ | </ | ||
- | Create a new config file | + | * Create a new config file |
+ | |||
+ | <code language-bash> | ||
+ | sudo nano / | ||
- | < | ||
- | '' | ||
</ | </ | ||
- | Paste in the following | + | * Paste in the following |
- | < | + | < |
- | '' | + | listen=NO |
listen_ipv6=YES | listen_ipv6=YES | ||
anonymous_enable=NO | anonymous_enable=NO | ||
Line 98: | 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 | ||
+ | * 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/ | ||
+ | |||
+ | 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 / | ||
+ | |||
+ | |||
+ | </ | ||
- | Save the file | + | * In detail, this is what each number is doing:// |
- | Restart vsftpd | + | **Then you should be able to FTP to a site without changing permissions all over the place!** |