Page 1 of 15 12311 ... LastLast
Results 1 to 10 of 144

Thread: HOW TO : Create a FTP server with user access (proftpd)

  1. #1
    Join Date
    Jun 2005
    Location
    France
    Beans
    7,100
    Distro
    Ubuntu 10.04 Lucid Lynx

    HOW TO : Create a FTP server with user access (proftpd)

    This thread is obsolete but there is useful support in, refer to the breezy one now :
    http://www.ubuntuforums.org/showthread.php?p=429783#post429783
    Thank you


    I created this How to for people who want to share files with friends using FTP protocol, like FTPservU under windows. The way i give you is not the only one, I hope my How to is enough clear.
    This FTP server will allow only users with the good password (persons to whom you gave the password and username). So you will be sure that only known persons will access your FTP server.

    1-
    Install proftpd with synaptic or with this command :
    Code:
    sudo apt-get install proftpd
    2- Add this line in /etc/shells file (sudo gedit /etc/shells to open the file) :
    Code:
    /bin/false
    Create a /home/FTP-shared directory :
    Code:
    cd /home
    sudo mkdir FTP-shared
    Create a user named userftp which will be used only for ftp access. This user don't need a valid shell (more secure) therefore select /bin/false shell for userftp and /home/FTP-shared as home directory (property button in user and group window).
    To make this section clearer, i give you the equivalent command line to create the user :
    Code:
    sudo useradd userftp -p your_password -d /home/FTP-shared -s /bin/false
    In FTP-shared directory create a download and an upload directory :
    Code:
    cd /home/FTP-shared/
    sudo mkdir download
    sudo mkdir upload
    Now we have to set the good permissions for these directories :
    Code:
    cd /home
    sudo chmod 755 FTP-shared
    cd FTP-shared
    sudo chmod 755 download
    sudo chmod 777 upload
    3- OK, now go to the proftpd configuration file :
    Code:
    sudo gedit /etc/proftpd.conf
    and edit your proftpd.conf file like that if it fit to your need :
    Code:
    # To really apply changes reload proftpd after modifications.
    AllowOverwrite on
    AuthAliasOnly on
    
    # Choose here the user alias you want !!!!
    UserAlias sauron userftp
    
    ServerName			"ChezFrodon"
    ServerType 			standalone
    DeferWelcome			on
    
    MultilineRFC2228 on
    DefaultServer			on
    ShowSymlinks			off
    
    TimeoutNoTransfer 600
    TimeoutStalled 100
    TimeoutIdle 2200
    
    DisplayFirstChdir               .message
    ListOptions                	"-l"
    
    RequireValidShell 		off
    
    TimeoutLogin 20
    
    RootLogin 			off
    
    # It's better for debug to create log files ;-)
    ExtendedLog 			/var/log/ftp.log
    TransferLog 			/var/log/xferlog
    SystemLog			/var/log/syslog.log
    
    #DenyFilter			\*.*/
    
    # I don't choose to use /etc/ftpusers file (set inside the users you want to ban, not useful for me)
    UseFtpUsers off
    
    # Allow to restart a download
    AllowStoreRestart		on
    
    # Port 21 is the standard FTP port, so don't use it for security reasons (choose here the port you want)
    Port				1980
    
    # To prevent DoS attacks, set the maximum number of child processes
    # to 30.  If you need to allow more than 30 concurrent connections
    # at once, simply increase this value.  Note that this ONLY works
    # in standalone mode, in inetd mode you should use an inetd server
    # that allows you to limit maximum number of processes per service
    # (such as xinetd)
    MaxInstances 8
    
    # Set the user and group that the server normally runs at.
    User                  nobody
    Group                 nogroup
    
    # Umask 022 is a good standard umask to prevent new files and dirs
    # (second parm) from being group and world writable.
    Umask				022	022
    
    PersistentPasswd		off
    
    MaxClients 8
    MaxClientsPerHost 8
    MaxClientsPerUser 8
    MaxHostsPerUser 8
    
    # Display a message after a successful login
    AccessGrantMsg "welcome !!!"
    # This message is displayed for each access good or not
    ServerIdent                  on       "you're at home"
    
    # Set /home/FTP-shared directory as home directory
    DefaultRoot /home/FTP-shared
    
    # Lock all the users in home directory, ***** really important *****
    DefaultRoot ~
    
    MaxLoginAttempts    5
    
    #VALID LOGINS
    <Limit LOGIN>
    AllowUser userftp
    DenyALL
    </Limit>
    
    <Directory /home/FTP-shared>
    Umask 022 022
    AllowOverwrite off
    	<Limit MKD STOR DELE XMKD RNRF RNTO RMD XRMD>
    	DenyAll
    	</Limit>
    </Directory>
    
    <Directory /home/FTP-shared/download/*>
    Umask 022 022
    AllowOverwrite off
    	<Limit MKD STOR DELE XMKD RNEF RNTO RMD XRMD>
    	DenyAll
    	</Limit>
    </Directory>
    
    <Directory> /home/FTP-shared/upload/>
    Umask 022 022
    AllowOverwrite on
    	<Limit READ RMD DELE>
          	DenyAll
        	</Limit>
    
        	<Limit STOR CWD MKD>
          	AllowAll
        	</Limit>
    </Directory>
    Ok you have done proftpd configuration. Your server is on port 1980 (in this exemple) and the access parameters are
    user : sauron
    password : the one you've set for userftp

    4- To start/stop/restart your server :
    Code:
    sudo /etc/init.d/proftpd start
    sudo /etc/init.d/proftpd stop
    sudo /etc/init.d/proftpd restart
    To perform a syntax check of your proftpd.conf file :
    Code:
    sudo proftpd -td5
    To know who is connected on your server in realtime use "ftptop" command (use "t" caracter to swich to rate display), you can also use the "ftpwho" command.
    other informations here


    Misc
    ProftpTools 1.0
    ProftpTools is a script I wrote thanks to swoop's feedback. This script allow you to start/stop proftpd, mount/unmount auto/manually directories, show your IP, ... and all of that with a GUI in order to use proftpd in a really easy way !
    To install ProftpTools, download ProftpTools_v1-0.tar.gz (at the bottom of the page) and untar it where you want and then move the ProftpTools file in /usr/bin :
    Code:
    tar -xzvf ProftpTools_v1-0.tar.gz
    cd ProftpTools_v1-0/
    sudo mv ProftpTools /usr/bin/
    Then add this line in your .bashrc (it's in your home directory : gedit /home/username/.bashrc) file in order to specify what is the ProftpTools directory path, YOU MUST REMOVE THE "/" CHARACTER at the end of the path. I give you an exemple if your ProftpTools directory is in your home directory :
    Code:
    ProftpTools_dir=/home/username/ProftpTools_v1-0
    export ProftpTools_dir
    Now all you have to do is to type ProftpTools in a terminal and .... enjoy
    You need zenity installed to use this script.

    Don't hesitate to post in this thread or send me PM to report bugs, ask new features, correct my english, suggest improvement and thank you to give me feedback about this tool.

    useful trick :
    This trick is integrated in ProftpTools.
    If you don't want (like me ) to use space in your /home directory, and use space on another hard drive, or if you just want to share a directory from another partition ... you can mount the directory you want in your download or upload directory without changing anything in proftpd.conf file, use these commands :
    Code:
    sudo mount -o bind the_directory_you_want_to_share /home/FTP-shared/download
    or
    sudo mount -o bind the_directory_you_want_to_use_for_upload /home/FTP-shared/upload
    This command will not overwrite the directory, the idea is just to mount a directory in another one without overwritng anything, so when someone will log in your server he will see and use the mounted directory if you have mounted one. To unmout a directory (download directory for exemple):
    Code:
    sudo umount /home/FTP-shared/download
    Permanent mount :
    If you don't want to re-mount your directories after a reboot you can add a line in fstab file like that (sudo gedit /etc/fstab to open the file) :
    Code:
    the_directory_to_mount /home/FTP-shared/download vfat bind 0 0
    thanks reet

    If you want to create other directories in FTP-shared, think to add it in proftpd.conf file.
    Don't hesitate to test yourself your server using gFTP for exemple, it's really helpful to debug your server.

    Other stuff
    If you have a router you should read that, it describe the 2 commands to add in proftpd.conf and why.
    If you have a dynamic DNS have a look here, you can also use ddclient(maybe easier for newbies).
    Most of informations you're looking for are here
    To get more debug informations : http://www.proftpd.org/localsite/Use...ked/x1058.html
    You can specify a specific passive port range using PassivePorts command, it's very useful when you use a firewall in order to know which ports to allow.



    Thanks for feedback, and sorry if my english is sometimes really bad

    Don't hesitate to post questions about proftpd in this thread.
    Attached Files Attached Files
    Last edited by frodon; December 14th, 2005 at 02:29 PM. Reason: ProftpTools now available !

  2. #2
    Join Date
    Nov 2004
    Beans
    117

    Re: HOW TO : Create a FTP server with user access (proftpd)

    Thanks for the How To, btw you can always use ddclient for dynamic DNS, it is very easy to use.

    Ben

  3. #3
    Join Date
    Jun 2005
    Location
    France
    Beans
    7,100
    Distro
    Ubuntu 10.04 Lucid Lynx

    Re: HOW TO : Create a FTP server with user access (proftpd)

    Quote Originally Posted by vassie
    Thanks for the How To, btw you can always use ddclient for dynamic DNS, it is very easy to use.

    Ben
    Thanks for the remark, I've added a link in misc section.

  4. #4
    Join Date
    Jun 2005
    Location
    Malmö, Sweden
    Beans
    42
    Distro
    Ubuntu 6.06

    Re: HOW TO : Create a FTP server with user access (proftpd)

    What about defining passive port ranges!?
    Last edited by WetWilly; July 27th, 2005 at 10:06 PM.

  5. #5
    Join Date
    Jun 2005
    Location
    France
    Beans
    7,100
    Distro
    Ubuntu 10.04 Lucid Lynx

    Re: HOW TO : Create a FTP server with user access (proftpd)

    What do you mean by "passive port range", can you explain what you want to do (or to know) ? (maybe I don't have this knowledge and it's why I don't understand what you mean)

  6. #6
    Join Date
    Jun 2005
    Location
    Malmö, Sweden
    Beans
    42
    Distro
    Ubuntu 6.06

    Re: HOW TO : Create a FTP server with user access (proftpd)

    well. some ftp clients usually connect in passive mode, and then u need more ports open than just 21. in some servers for winblows I've seen the possibillty to decide which numbers these ports should use.

  7. #7
    Join Date
    Jun 2005
    Location
    France
    Beans
    7,100
    Distro
    Ubuntu 10.04 Lucid Lynx

    Re: HOW TO : Create a FTP server with user access (proftpd)

    Ok I understand what you mean.
    You can use the PassivePorts command in order to specify a specific port range for passive ports (very useful if you use a firewall in order to allow these ports).
    You can set your server to port 1980 (as in the exemple) and set also passive port range ... up to you ... it depends of your need.
    so thanks for the question , I will add a line about it in misc section.

  8. #8
    Join Date
    Jul 2005
    Beans
    24

    Re: HOW TO : Create a FTP server with user access (proftpd)

    Quote Originally Posted by frodon
    Ok I understand what you mean.
    You can use the PassivePorts command in order to specify a specific port range for passive ports (very useful if you use a firewall in order to allow these ports).
    You can set your server to port 1980 (as in the exemple) and set also passive port range ... up to you ... it depends of your need.
    so thanks for the question , I will add a line about it in misc section.
    can anyone help me? I was trying to install the ftpserver and run into some weird trouble, now Im stuck without admin priviledges or something weird like that...
    http://ubuntuforums.org/showthread.p...152#post279152

  9. #9
    Join Date
    Apr 2005
    Location
    Denmark
    Beans
    29

    Re: HOW TO : Create a FTP server with user access (proftpd)

    Quote Originally Posted by frodon
    2- Create a user named userftp which will be used only for ftp access. Go to System>Administration>Group & Users (sorry for the name i have a french version). Give the minimum rights for this user, this user don't need a shell (for security reasons).
    How do I do that in the shell? I'm connected to the Ubuntu box through ssh.

    I have added a user (userftp), but how do I give the new user rights?

    Thanks!

  10. #10
    Join Date
    May 2005
    Beans
    Hidden!

    Re: HOW TO : Create a FTP server with user access (proftpd)

    Nice guide, how can I make it so that every user on the system can login, upload, make folders and download from their home directory?

Page 1 of 15 12311 ... LastLast

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •