I would like to setup a basic FTP server on my Ubuntu Server install. I have been playing with VSFTPD, but am having issues getting the server to allow me to create directories and copy files. I have set the system to allow local users, but it appears that doesn't mean I get access to create directories. This may be an instance where I need to be better grounded in Ubuntu server setup in order to configure this FTP server adequately. The end goal is to be able to move files from my local dev folder into my www folder for deployment. Directories need to be able to move as well. Any help would be greatly appreciated.
I'm going to recommend PureFTPD because it's been the simplest and easiest to use in my opinion. You'll need to install it first:
Something like this:
Which will create the
Lastly if you want to lock down SSH access for that account run:
In my opinion SFTP is a better way to go. Hey, it's got the word "secure" in the name, it must be better :)
SFTP uses ssh to do file transfers (as distinct from FTPS, which is FTP + TLS, basically). What that means is that if you can ssh to the target machine, you can almost always SFTP to it, as it uses the same auth mechanisms, so no having to install and configure different server daemons at all (i.e. no pureftpd or vsftpd). As long as your permissions are set correctly for
Most client software nowadays will do SFTP pretty happily, and you can also use
I would strongly recommend using vsftpd. It is one of the most secure FTP daemons in Linux. Many others had weaknesses in the past and it seems the FTP is hard to implement in a secure way.
vsftpd starts right after you install it. Ubuntu enables local users to log in. So start your FTP client and log in as normal user with your system password (My example uses lftp):
Now I'm using some kind of file manager (Nautilus, Shell etc.) to create a new directory
Directory is there and I'm able to
I humbly recommend an FTP server I wrote myself from scratch: JetFTP. It is extremely simple to install and use.
Using JetFTP is simple - just connect to port
Do not use ftp, it is an inherently insecure protocol because it sends the username and password in the clear to the server. Implementing sftp is just as easy and you gain a huge advantage in the security of your connection.
There are three different ways to set up an ftp server:
(1) Anonymous FTP :
People can access the server only with the anonymous account and without a password. Of course, the server administrator will set a limit for uploads to prevent users from putting illegal files like pirated music/films/games.
(2) FTP with both anonymous access and users with a passworded account:
This method lets both anonymous and passworded account users to enter the server. They will only have access to a specified directory, except for the user root who can view/modify/delete all files and/or folders.
(3) FTP with mysql support for virtual users authentication :
This method allows access to the server only for some user groups that haven't got a virtual users authentication shell account on the system. It uses an external mysql server that stores user information.
First Option : Anonymous FTP
Before starting the creation of an anonymous ftp server, you have to add a user called ftp into your system, with a home directory too. This step is really easy, just follow these commands:
Doing this permits only this account to write in this folder. You can use more variables to specify what the ftp server will do. Here are some examples:
Second Option : '''Both anonymous and passworded account users'''
To make it possible to have both anonymous and passworded account users in the same server, follow this small guide :
Third Option : '''Virtual Users with Mysql'''
To create a server with mysql support follow this steps :
Download and install User Manager for PureFTPd which you can find here http://machiel.generaal.net/index.php?subject=user_manager_pureftpd
Decompress it and upload all its contents into your web server www directory and then write on your browser this link link http://localhost/ftp/install.php Follow all the steps that the installer asks to you Copy and save rge pureftpd-mysql.conf into pureftpd user manager directory
Done. Access to the administration panel using this link http://localhost/ftp
More options to add before launch the server process
And see this for some ftp server application:
The default install of VSFTPD doesn't allow any create/modify changes by default. You need to edit
And secondly you need to configure the appropriate file-system permissions on the respective files and folders.