The idea with FTP is to have folders that can be reachable between Linux and Windows, locally and remotely and easily. FTP is not secure, but it can be made secure, that info can be found on the web. For now I am covering the basics of FTP here.
For most things that I need to do, I don’t need the files to be secure anyways, 90% of the time nothing critical is going back and forth across remotely. If it is I would use a secure method of sending files via SSH via SFTP or an SSHFS.
FTP is an old protocol but it just plain works and is compatible with Windows, Linux and Mac. I have tried WebDAV in the past but it is compatible to only a degree with various Windows operating systems. I have had a hard time getting it working correctly on versions of Windows beyond XP, resorting in installing patches to Windows and etc. Generally not easy to implement.
I was also looking at FTP as a native tool typical of server installs. I have experimented with cloud setups such as OwnCloud and Sparkleshare, but with FTP I was looking for something simple and quick to setup, no special software, no mySQL databases running on the Raspberry Pi, no special software on client PCs, that sort of thing.
sudo apt-get install vsftpd
Edit the configuration file
Back it up first then do an edit.
sudo cp /etc/vsftpd.conf /etc/vsftpd.orig
sudo nano /etc/vsftpd.conf
uncomment local_enable = YES
uncomment write_enable = YES
Find this and check that it is set this way…
I have read online that enabling the PASV capability for FTP is a good idea. Frequently when I have FTP’d to various ISP’s sites I have seen them operate in PASV mode. So it stands to reason that if the pro’s are have it set up that way it may have it’s advantages.
Add the following lines to the /etc/vsftp.conf file.
There is nothing magic about the numbers of the port range other than they should be unused by anything else that your setup might require and generally I have seen high numbers used commonly. To work out side of your local network you must enable port forwarding of the range of port numbers through your router configuration.
Changes to vsFTP
With the newer versions of vsFTP there is a change that has occurred since I wrote my previous post about vsFTP ( http://oils-of-life.com/blog/linux/server/additional-utilities-for-a-linux-server/ )
The change has to do with the fact that the root directory of the user has to be non-writable and I have read online that it is best to make it owned by root as well. This is covered below, after the section on adding a user. You need to have a user first before modifying their permissions!
To create an FTP user, create it in a way that it does not have a login shell. So that someone who can log in to the FTP account can’t execute shell commands. The line /sbin/nologin may not be in the /etc/shell file and in that case it needs to be added in there. The user basically has to be jailed in their directory and has to have no login shell.
sudo useradd -m -s /sbin/nologin -d /home/user user
I added Documents, public_html directories to the /home/user as well. Then made the users root folder /home/user, owned by root and nonwritable.
cd /home/user chown user:user Documents chown user:user public_html chown root:root /home/user Make Root of user non writable sudo chmod a-w /home/user
FTPing on the PC
Now that ftp is set up on the server you will want to be able to connect to it!
Options for connecting…
Command Line, WIndows and Linux
That gets you into FTP via the command line. The command prompt will now start with ftp> ,that is how you know that you are within the ftp command shell.
It is archaic, but worth knowing when you have to stick a file up or pull it down right at the command line. The commands the ftp prompt accepts are basic, but good enough to get most work done. Type help at the prompt to get a list of commands.
Just enter the location of the ftp server right into the top of the directory folder and you will be prompted for a password and taken there.
- Open Computer by clicking the “Start” button, and then clicking Computer.
- Right-click anywhere in the folder, and then click Add a Network Location.
- In the wizard, select Choose a custom network location, and then click Next.
- To use a name and password, clear the Log on anonymously check box.