**uFTP - FTP server installation** **Option 1 install from sources (recommended)** Some software are required for this procedure: git, gcc and make, check your Linux distribution documentation for more information about how to get the required software. Eg: Under **Ubuntu/Debian** you can install all required software with this command: # sudo apt-get install git gcc make Clone the repository: # git clone https://github.com/kingk85/uFTP.git **Compile uFTP server** # cd uFTP **Note:** To enable the large file support, the Makefile file must be edited, find in the file the text that starts with DEFINITIONS= and modify the file as the example below. DEFINITIONS= #TO ENABLE THE LARGE FILE SUPPORT UNCOMMENT THE NEXT LINE #DEFINITIONS=-D_LARGEFILE64_SOURCE Remove the comment at the line: #DEFINITIONS=-D_LARGEFILE64_SOURCE The final result would be: DEFINITIONS= #TO ENABLE THE LARGE FILE SUPPORT UNCOMMENT THE NEXT LINE DEFINITIONS=-D_LARGEFILE64_SOURCE **Note:** To enable TLS/SSL find the following lines in the Makefile file. ENABLE_OPENSSL_SUPPORT= #TO ENABLE OPENSSL SUPPORT UNCOMMENT NEXT 2 LINES #ENABLE_OPENSSL_SUPPORT=-D OPENSSL_ENABLED #LIBS=-lpthread -lssl -lcrypto Remove the comments at the lines: #ENABLE_OPENSSL_SUPPORT=-D OPENSSL_ENABLED #LIBS=-lpthread -lssl -lcrypto The final result would be: ENABLE_OPENSSL_SUPPORT= #TO ENABLE OPENSSL SUPPORT UNCOMMENT NEXT 2 LINES ENABLE_OPENSSL_SUPPORT=-D OPENSSL_ENABLED LIBS=-lpthread -lssl -lcrypto **Note:** To enable the PAM Authentication module for the standard /etc/passwd, /etc/shadow authentication find the following lines in the makefile. ENABLE_PAM_SUPPORT= PAM_AUTH_LIB= #TO ENABLE PAM AUTH UNCOMMENT NEXT TWO LINES #ENABLE_PAM_SUPPORT= -D PAM_SUPPORT_ENABLED #PAM_AUTH_LIB= -lpam Remove the comments at the lines: #ENABLE_OPENSSL_SUPPORT=-D OPENSSL_ENABLED #LIBS=-lpthread -lssl -lcrypto The final result would be: ENABLE_PAM_SUPPORT= PAM_AUTH_LIB= #TO ENABLE PAM AUTH UNCOMMENT NEXT TWO LINES ENABLE_PAM_SUPPORT= -D PAM_SUPPORT_ENABLED PAM_AUTH_LIB= -lpam The openSSL libraries are required to compile, under Ubuntu use the following command: sudo apt-get install libssl-dev Generate a new certificate (only if TLS/SSH is enabled): mkdir /etc/uFTP cd /etc/uFTP openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365 openssl rsa -in key.pem -out newkey.pem mv newkey.pem key.pem chown root:root /etc/uFTP/key.pem chmod -rwx /etc/uFTP/key.pem Continue with the build. # make Copy the files to the linux path, root permission are required under ubuntu use the sudo command. # cp build/uFTP /sbin/uFTP # cp uftpd.cfg /etc/uftpd.cfg Set permissions and root restriction of the configuration file. chown root:root /sbin/uFTP chown root:root /etc/uftpd.cfg chmod -rwx /etc/uftpd.cfg Run uFTP, note: root permissions are required to execute the uFTP server. # uFTP **Option 2 install from binary** Download the latest binary file for your OS: # sudo cd /sbin # sudo wget http://www.uftpserver.com/downloads/binaries/latest/x64/uFTP Download the latest configuration sample: # sudo cd /etc # sudo wget http://www.uftpserver.com/downloads/configuration_sample/uftpd.cfg Set permissions and root restriction of the configuration file. chown root:root /sbin/uFTP chown root:root /etc/uftpd.cfg chmod -rwx /etc/uftpd.cfg Run uFTP, note: root permissions are required to execute the uFTP server. # uFTP All binary downloads and examples can be found at: http://www.uftpserver.com/downloads/