proFTPd потужний і в той же час досить простий в налаштуванні ftp-сервер для unix-систем. Крок за кроком розглянемо його встановлення та початкове налаштування в операційній системі Ubuntu.
При збиранні образ котрий збирається повинен за розрядністю співпадати з системою на якій проводиться збирання. Отже за порядком:
sudo apt-get install proftpd
Додаємо у файл /etc/shells запис /bin/false
Створюємо домашню теку та теки для завантаження та вивантаження файлів та корегуємо права доступу до них:
sudo mkdir -p /home/ftp/download /home/ftp/upload
sudo chmod 755 /home/ftp
sudo chmod 755 /home/ftp/download
sudo chmod 777 /home/ftp/upload
sudo useradd ftp_user -p your_password -d /home/ftp -s /bin/false
sudo passwd ftp_user
sudo nano /etc/proftpd/proftpd.conf
Надалі поле для творчості досить широке. Розглянемо у найпростішому вигляді два можливих варіанти - анонімний доступ та доступ з авторизацією через введення пароля.
ServerName "proFTPd Server"
ServerType standalone
DefaultServer on
Port 21
Umask 022 022
MaxInstances 30
TimeoutLogin 120
TimeoutIdle 600
TimeoutNoTransfer 900
TimeoutStalled 3600
User ftp
Group nogroup
UseReverseDNS off
TransferLog /var/log/proftpd/xferlog.legacy
LogFormat default "%h %l %u %t \"%r\" %s %b"
LogFormat auth "%v [%P] %h %t \"%r\" %s"
LogFormat write "%h %l %u %t \"%r\" %s %b"
ServerIdent on "You're at proFTPd server"
<Limit LOGIN>
Order allow,deny
Allow from all
Deny from all
</Limit>
<Global>
AllowOverwrite yes
IdentLookups off
ExtendedLog /var/log/proftpd/access.log WRITE,READ write
ExtendedLog /var/log/proftpd/auth.log AUTH auth
</Global>
<Anonymous /home/ftp>
User ftp
Group nogroup
UserAlias anonymous ftp
RequireValidShell no
MaxClients 5
<Limit CWD DIRS READ LIST>
AllowAll
</Limit>
<Limit WRITE>
DenyAll
</Limit>
<Directory /home/ftp/upload/*>
<Limit READ RETR GET WRITE STOR CWD MKD RMD DELE>
AllowAll
</Limit>
<Limit READ>
DenyAll
</Limit>
</Directory>
<Directory /home/ftp/download/*>
<Limit READ CWD RETR CWD>
AllowAll
</Limit>
<Limit WRITE>
DenyAll
</Limit>
</Directory>
</Anonymous>
ServerName "proFTPd Server"
ServerType standalone
DefaultServer on
Port 21
Umask 022 022
MaxInstances 30
TimeoutLogin 120
TimeoutIdle 600
TimeoutNoTransfer 900
TimeoutStalled 3600
User nobody
Group nogroup
#UseReverseDNS off
TransferLog /var/log/proftpd/xferlog.legacy
LogFormat default "%h %l %u %t \"%r\" %s %b"
LogFormat auth "%v [%P] %h %t \"%r\" %s"
LogFormat write "%h %l %u %t \"%r\" %s %b"
AllowOverwrite on
AuthAliasOnly on
MaxLoginAttempts 5
DefaultRoot ~
ServerIdent on "You're at proFTPd server"
AllowStoreRestart on
PersistentPasswd off
MaxClients 8
MaxClientsPerHost 8
MaxClientsPerUser 8
MaxHostsPerUser 8
UseFtpUsers off
ExtendedLog /var/log/ftp.log
RequireValidShell off
RootLogin off
ShowSymlinks off
DeferWelcome on
MultilineRFC2228 on
DisplayLogin welcome.msg
DisplayChdir .message
ListOptions "-l"
UserAlias ftp ftp_user
<Limit LOGIN>
AllowUser ftp_user
DenyALL
</Limit>
<Directory /home/ftp>
Umask 022 022
AllowOverwrite off
<Limit MKD STOR DELE XMKD RNRF RNTO RMD XRMD>
DenyAll
</Limit>
</Directory>
<Directory /home/ftp/download/*>
Umask 022 022
AllowOverwrite off
<Limit MKD STOR DELE XMKD RNEF RNTO RMD XRMD>
DenyAll
</Limit>
</Directory>
<Directory /home/ftp/upload/*>
Umask 022 022
AllowOverwrite on
<Limit READ RMD>
DenyAll
</Limit>
<Limit STOR CWD MKD DELE>
AllowAll
</Limit>
</Directory>
Перевірити правильність файлу конфігурації після внесення до нього змін можна скориставшись командою
sudo proftpd -td5
Після цього необхідно перезапустити сервер скориставшись командою
sudo /etc/init.d/proftpd restart
Якщо виникає необхідність змонтувати в директорію доступу інші теки, потрібно скористатися командою
sudo mount --bind /яку/теку/змонтувати /home/download/куди/змонтувати