Из двух более распространенных версий ftp сервером (proftpd и vsftpd), мне больше по душе proftpd! Его я и буду устанавливать!
Устанавливаем из портов
pkg install proftpdНастройка не занимает много времени! Так , что перейдем к настройка! По умолчанию proftpd устанавливается в каталог /usr/local/etc/proftpd.conf. Proftpd.conf — конфигурационный файл, его мы и будем редактировать! Мне нравиться редактор nano (не установлен в систему по умолчанию!) Устанавливается двумя способами- из интернета, и из портов. Я ставлю из интернета!
pkg install nanoРедактируем конфигурационный файл! У каждого он свой! Я выкладываю свой!
#
# For more information about Proftpd configuration
# see http://www.proftpd.org/
#
# This is a basic ProFTPD configuration file (rename it to
# 'proftpd.conf' for actual use. It establishes a single server
# and a single anonymous login. It assumes that you have a user/group
# "nobody" and "ftp" for normal operation and anon.
ServerName "ProFTPD Default Installation"
ServerType standalone
DefaultServer on
ScoreboardFile /var/run/proftpd/proftpd.scoreboard
#UserAlias ftp alex
# Port 21 is the standard FTP port.
Port 21
# Use IPv6 support by default.
UseIPv6 off
# Umask 022 is a good standard umask to prevent new dirs and files
# from being group and world writable.
Umask 022
# 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 30
MaxClients 15 "Too many connections to the server"
MaxClientsPerHost 4 "% m client already connected with your host, more not allowed"
MaxLoginAttempts 3 "Too many login attempts"
CommandBufferSize 512
DisplayConnect /etc/ftp_connect.msg
DisplayLogin /etc/ftp_login.msg
AccessDenyMsg "ATTENTION!!! ALL CONNECTIONS LOGED"
AccessGrantMsg "Now apload/download files"
#DisplayGoAway "Go Away"
#RequireValidShell off
#AuthUserFile /usr/local/etc/ftp.user
TimeoutIdle 180
TimeoutLogin 120
TimeoutNoTransfer 360
TimeoutStalled 640
# Set the user and group under which the server will run.
User nobody
Group nogroup
# To cause every FTP user to be "jailed" (chrooted) into their home
# directory, uncomment this line.
DefaultRoot ~
DefaultRoot /var/ftp
# Normally, we want files to be overwriteable.
AllowOverwrite on
#LOGS
SyslogLevel notice
UseReverseDNS off
TransferLog /var/log/proftpd-tranfer.log
SystemLog /var/log/proftpd-error.log
# Bar use of SITE CHMOD by default
#<Limit SITE_CHMOD>
# DenyAll
#</Limit>
<Directory />
AllowOverwrite on
</Directory>
#VALID LOGINS
#<Limit LOGIN>
#AllowUser alex
#AllowALL
#</Limit>
<Directory /var/ftp/>
Umask 0777 0777
AllowOverwrite on
<Limit MKD STOR DELE XMKD RNRF RNTO RMD XRMD>
AllowAll
</Limit>
</Directory>
# A basic anonymous configuration, no upload directories. If you do not </Limit># want anonymous users,
#########################################################################
# #
# Uncomment lines with only one # to allow basic anonymous access #
# #
#########################################################################
#<Anonymous ~ftp>
# User ftp
# Group ftp
### We want clients to be able to login with "anonymous" as well as "ftp"
# UserAlias anonymous ftp
### Limit the maximum number of anonymous logins
# MaxClients 10
### We want 'welcome.msg' displayed at login, and '.message' displayed
### in each newly chdired directory.
# DisplayLogin welcome.msg
# DisplayFirstChdir .message
### Limit WRITE everywhere in the anonymous chroot
# <Limit WRITE>
# DenyAll
# </Limit>
#</Anonymous>
После того как мы сохранили конфигурационный файл, создадим необходимы директорииmkdir /var/ftpПропишем в Shells следующую строку
nano /etc/shells
/bin/falseНазначим права доступа
chmod -R 777 /var/ftpТеперь нужно задать пользователя (владельца папки). Мы его создадим. Например:
adduser ftp
Username: ftp
вводим имя создаваемого пользователя
Full name:
полное имя, можно оставить пусты, просто нажать Enter
Uid (Leave empty for default):
user id, можно ввести самому, начиная с номера 1001, либо нажать Enter, система выберет сама
Login group [newuser]:
группа в которую входит создаваемый пользователь, по умолчанию совпадает с именем
Login group is newuser. Invite newuser into other groups? []:
включить-ли пользователя в другие группы, если нет, жмем Enter
Login class [default]:
класс пользователя, о них поговорим чуть позже, на данном этапе, жмем Enter
Shell (sh csh tcsh nologin) [sh]: /bin/false
здесь предлагается выбрать системную оболочку, если вы не собираетесь давать данной учетной записи,
удаленный доступ к системе, например через SSH, вписываем nologin,
либо выбираем из предложенных вариантов, я обычно ставлю /bin/false (для ftp сервера)
Home directory [/home/newuser]:/var/ftp (Тогда пользователь ftp попадем именно в эту папку)
назначаем домашнюю директорию, если значение по-умолчанию устраивает, жмем Enter
Home directory permissions (Leave empty for default):
права доступа на домашнюю директорию, что-бы оставить по-умолчанию, жмем Enter
Use password-based authentication? [yes]:
использовать-ли авторизацию по паролю
Use an empty password? (yes/no) [no]:
можно-ли использовать пустые пароли
Use a random password? (yes/no) [no]:
система предлагает сгенерировать вам пароль, что-бы согласиться, нужно написать yes
на заключительном этапе создания учетной записи, будет показан сгенерированный пароль
если предпочитаете ставить пароль вручную, жмите Enter
Enter password:
вводим пароль, имейте в виду, программа не покажет, что вы вообще что-либо вводите
так что будьте внимательны
Enter password again:
повторный ввод пароля
Lock out the account after creation? [no]:
заблокировать-ли учетную запись после создания
Username : ftp
Password : *****
Full Name :
Uid : 1011
Class :
Groups : newuser
Home : /var/ftp
Home Mode : 777
Shell : /bin/false
Locked : no
OK? (yes/no): yes
Add another user? (yes/no): noЕще раз пропишим тот же пароль для пользователя, что и создали ранее
passwd ftpВыставим владельца на папку /var/ftp
chown -R ftp:ftp /var/ftpПропишим наш сервер в автозагрузку nano /etc/rc.conf
proftpd_enable="YES"И все что нам осталось это перезапустить наш сервер командой
service proftpd restart