Для передачи данных на сервер, работы с файлами и папками необходимо установить FTP сервер. В качестве сервера мы выбрали Ubuntu 20.04, в качестве службы vsftpd. Данный FTP сервер отличается от популярного proftpd своей простотой и быстрой настройкой. В качестве клиента можно использовать любой: filezilla, total commander или mc.
Все настройки мы производим от пользователя root, если вы используете обычного пользователя, перед командой добавляйте sudo.
1. Установим службу
apt update
apt install vsftpd
systemctl start vsftpd
systemctl enable vsftpd
2. Произведем ее настройку
Сделаем копию оригинальных настроек:
cp /etc/vsftpd.conf /etc/vsftpd.conf_default
Добавим пользователя и укажем для него пароль:
useradd -m testuser
passwd testuser
Настроим фаервол, в нашем случае iptables:
iptables -A INPUT -p tcp -m tcp --dport 20 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 21 -j ACCEPT
/sbin/iptables-save > /etc/iptables/rules.v4
В большинстве случаев пользователю нужны права на запись, разрешим это в настройках сервера:
nano /etc/vsftpd.conf
write_enable=YES
Сохраним файл настроек Ctrl +O и Enter, Ctrl + X чтобы выйти из редактора. Перезапустим службу:
systemctl restart vsftpd.service
Базовая настройка выполнена, но часто необходимо настроить ftp доступ для определенного каталога, например папки домена (сайта). Для этого нам необходимо сменить директорию пользователя по умолчанию, добавить пользователя в группу www-data и разрешить для папок и файлов запись для группы. По умолчанию запись указана только для пользователя.
usermod -d /var/www/ testuser
usermod -a -G www-data testuser
find /var/www -type d -exec chmod 775 {} \;
find /var/www -type f -exec chmod 664 {} \;
Готово, теперь наш пользователь может работать с файлами и папками для указанного пути. Если у Вас несколько сайтов, можно добавить ftp пользователя для каждого. По умолчанию пользователь имеет доступ только к указанной папке включая вложенные и не может перейти выше указанной нами.