FTP server в Linux Ubuntu

apt-get install ssh — Удалённый доступ ssh через putty
apt-get install vsftpd — установить ftp сервер

nano /etc/vsftpd.conf — редактировать файл конфигурации (поправить коменты):

listen=YES #служба vsftpd будет сама слушать порт входящих соединений.
anonymous_enable=NO
#запретить вход анонимам
local_enable=YES
#разрешить вход локальным пользователям
write_enable=YES
#разрешить загрузку файлов
local_umask=022
#полный доступ владельцу, чтение группе и остальным.
use_localtime=YES
#использовать локальное время сервера
connect_from_port_20=YES
#подключаться с 20 порта
xferlog_enable=YES
#запись логов
xfrlog_file=/var/log/vsftpd.log
#файл с логами
xferlog_std_format=YES
#формат логов
iddle_session_timeout=600
#отключение по таймауту неактивности.
data_connection_timeout=120
#время ожидания возобновления неоконченной передачи.
ascii_upload_enable=YES
#автоматическая подмена символов переноса между
ascii_download_enable=YES
#разными ОС, для соответствия стандартам системы
chroot_local_user=YES
#запретить пользователям выходить из домашней папки
chroot_list_file=/etc/vsftpd.chroot_list
#список chroot
allow_writeable_chroot=YES
#разрешить запись в корень
pasv_enable=YES
#вкл. пассивный режим
pasv_min_port=62000
#диапазон портов
pasv_max_port=62999
guest_enable=YES
#включение госетвых/виртуальных юзеров
guest_username=ftp
#их учётка, от её имени будут работать
virtual_use_local_privs=YES
#виртуальные используют привелегии локальных
user_sub_token=$USER
#префикс папки пользователя
local_root=/home/vsftpd/$USER
#домашний каталог пользователя
hide_ids=YES
#скрывать id юзеров
seccomp_sandbox=NO
#устранить ошибку 500 OOPS SECCOMP в Ubuntu
pam_service_name=vsftpd.virtual
#имя службы pam должно совпадать с именем соответствующего файла в /etc/pam.d
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
ssl_enable=NO

service vsftpd status — сведения о vsftpd
systemctl start vsftpd — запустить vsftpd
systemctl enable vsftpd — автозапуск vsftpd
service vsftpd restart — перезапуск FTP vsftpd.
ufw allow 20/tcp — открыть порт FTP данных в фаерволе
ufw allow 21/tcp — открыть порт FTP команд в фаерволе
adduser user — добавить user’а с параметрами из /etc/adduser.conf и папками из /etc/skel
mkdir /home/user/ftp — создать папку в папке пользователя
chown user /home/user/ftp — дать полный доступ к папке user’у

Виртуальные пользователи
Чтобы отключить локальных и включить виртуальных, закоментить всё в /etc/pam.d/vsftpd и добавить:

auth required pam_pwdfile.so pwdfile /etc/vsftpwd #файл паролей
account required pam_permit.so

apt-get install vsftpd libpam-pwdfile apache2-utils — установить libpam-pwdfile и apache2-utils, если не установлены с апачем.
htpasswd -c -d /etc/vsftpwd user — создать виртуального пользователя. -c создаёт файл паролей, с перезаписью, -d — алгоритм шифрования хэша пароля. Следующие без -c
htpasswd -D /etc/vsftpwd user — удалить юзера
service vsftpd restart — перезапустить службу vsftpd.
htpasswd -bd /etc/vsftpwd user 1 && mkdir /home/vsftpd/user && chown ftp /home/vsftpd/user — создать user’а с паролем 1, папку и назначить права на папку локальному ftp пользователю.