**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
To disable IPV6 support, for legacy device modify the makefile by disabling the IPV6_ENABLED define
From
ENABLE_IPV6_SUPPORT=
#TO ENABLE IPV6 support uncomment next line
ENABLE_IPV6_SUPPORT=-D IPV6_ENABLED
to this
ENABLE_IPV6_SUPPORT=
#TO ENABLE IPV6 support uncomment next line
#ENABLE_IPV6_SUPPORT=-D IPV6_ENABLED
openSSL libraries are required if uFTP is compiled with TLS support, 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
# for x64
# sudo wget https://www.uftpserver.com/downloads/binaries/latest/x64/uFTP
# for arm
# sudo wget https://www.uftpserver.com/downloads/binaries/latest/armhf/uFTP
Download the latest configuration sample:
# sudo cd /etc
# sudo wget https://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: https://www.uftpserver.com/downloads/