Из двух более распространенных версий 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