В этой статье мы расскажем, как установить и настроить FTP сервер, мы будем использовать Linux дистрибутив AlmaLinux.
Обновление и установка vsftpd
Для начала нам необходимо обновить систему нашего сервера делается это коммандой:
Обратите внимание, что я работаю от обычного пользователя «$:», если вы работаете от root-а «#:», вам не нужно использовать команду sudo.
1 | sudo yum update |
Далее Вам отобразиться [sudo] password for имя_пользователя: , введите пароль (Он не будет отображаться) и нажмите Enter для продолжения.
Соглашаемся на обновление пакетов нашего сервера, жмём «y», а потом Enter:
Соглашаемся на приём данного ключа, жмём «y», а потом Enter:
После того как Вы обновили пакеты, можем приступать к установке vsftpd — как раз это ПО и будет поднимать наш FTP сервер:
1 | sudo yum install vsftpd |
Соглашаемся на установку vsftpd и других компонентов, жмём «y», а потом Enter:
После того как Вы установили vsftpd, необходимо запустить службу и добавить в автозагрузку:
1 | sudo systemctl enable --now vsftpd |
Проверяем, запустилась ли служба, вводим:
1 | sudo systemctl status vsftpd |
Настройка vsftpd
Отредактируем файл конфигурации, vsftpd.conf (я буду использовать Vim):
1 | sudo vim /etc/vsftpd/vsftpd.conf |
Вносим конфигурацию:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | # Запрещаем анонимный вход anonymous_enable=NO # Разрешаем вход для локальных пользователей (Которые есть в /etc/passwd) local_enable=YES # Разрешаем пользователям вносить изменения в файловую систему, т.е. загрузка, создание и удаление файлов write_enable=YES # Включаем ведение логов xferlog_enable=YES # Включаем ведение логов в стандартном wu-ftpd стиле xferlog_std_format=YES # Включаем опцию, которая позволяет запускать сервер, вне зависимости запущен ли inetd/xinetd listen=YES # Делает тоже самое что и listen, но для IPv6, мы его использовать не будем #listen_ipv6=YES # Зададим имя PAM сервиса pam_service_name=vsftpd # !!! Создаем правила для входа разрешенных пользователей !!! # Разрешаем загружать список имён с файла userlist (По умолчанию находиться в: /etc/vsftpd/user_list и запрещает вход пользователям, находящиеся в этом списке) userlist_enable=YES # Меняем путь к файлу, который должен загружать vsftpd userlist_file=/etc/vsftpd/userlist_allow # Запрещаем пользователям не входящие в список разрешенных, вход userlist_deny=NO |
Создание пользователя и отключение доступа по SSH
Теперь можно создать ftp пользователя и добавить его в список разрешенных пользователей, создаёться пользователь данной коммандой:
1 | sudo useradd -m ftp_user |
Теперь сделаем так чтобы в пользователя не можно было войти с помощью ssh, для начала нам необходимо создать оболочку, которая будет выводить текст: «This account, only FTP access.», делаеться это командами:
1 | echo -e '#!/bin/sh\necho "This account, only FTP access."' | sudo tee -a /bin/ftpuseronly |
Даём права на исполнение данного файла:
1 | sudo chmod a+x /bin/ftpuseronly |
Добавляем оболочку ftp в список оболочек:
1 | echo "/bin/ftpuseronly" | sudo tee -a /etc/shells |
Меняем оболочку для нашего ftp пользователя:
1 | sudo usermod ftp_user -s /bin/ftpuseronly |
Для добавления пользователя в список разрешеных пишем в файл userlist_allow имя пользователя, файл необходимо создать, делаеться это коммандой:
1 | sudo touch /etc/vsftpd/userlist_allow |
Теперь можно добавить пользователя в данный список либо вручную либо с помощью данной комманды:
1 | echo "ftp_user" | sudo tee -a /etc/vsftpd/userlist_allow |
Создадим пароль для пользователя:
1 | sudo passwd ftp_user |
Создание правила в firewall, и перезапуск службы
Теперь нам необходимо создать правило в firewall которое откроет порт для ftp:
1 | sudo firewall-cmd --zone=public --add-service=ftp --permanent |
Перезагружаем firewall, чтобы изменения вступили в силу:
1 | sudo firewall-cmd --reload |
Ну и наконец-то мы можем перезагрузить наш ftp сервер и радоваться:
1 | sudo systemctl restart vsftpd |
Пример использования с помощью filezilla:
Читайте также: Установка и настройка Samba-сервера на RedHat-подобные системы.