5.3.8. Установка и настройка ProFTPd

Вместо настройки доступа по FTP можно использовать подключение по SFTP.

Для подключения к серверу по FTP необходимо установить и настроить на сервере специальное ПО — FTP-сервер. Один из наиболее популярных и удобных FTP-серверов — ProFTPd.

Подключитесь к серверу по SSH или VNC, установите ProFTPd и отредактируйте конфигурационные файлы. Порядок действий зависит от используемой ОС.

  1. Установите EPEL-репозиторий:
    yum install epel-release
  2. Установите ProFTPd:
    yum install proftpd
  3. Откройте порты для работы FTP:
    firewall-cmd --permanent --add-port=20-21/tcp
    firewall-cmd --permanent --add-port=40900-40999/tcp 
    firewall-cmd --reload
  4. Включите запуск ProFTPd при старте системы и запустите его:
    systemctl enable proftpd
    systemctl start proftpd
  5. Измените конфигурационный файл ProFTPd.
  1. Установите ProFTPd:
    apt-get install proftpd
  2. Измените конфигурационный файл ProFTPd.
  3. Выполните команду:
    echo "/bin/false" >> /etc/shells
  1. Установите ProFTPd:
    emerge --ask net-ftp/proftpd
  2. Скопируйте конфигурационный файл (если он не существует):
    cp /etc/proftpd/proftpd.conf.distrib /etc/proftpd/proftpd.conf
  3. Измените конфигурационный файл ProFTPd.
  4. Включите запуск ProFTPd при старте системы и запустите его:
    1. Для OpenRC:
      rc-update add proftpd default 
      rc-service proftpd start
    2. Для systemd:
      systemctl enable proftpd
      systemctl start proftpd
  1. Установите ProFTPd:
    dnf -y install proftpd 
  2. Измените конфигурационный файл ProFTPd (находится в /etc/proftpd.conf). В конце файла добавьте строку:
    PassivePorts 21000 21020
  3. Включите запуск ProFTPd при старте системы и запустите его:
    systemctl enable proftpd
    systemctl start proftpd
  4. Настройте SElinux (если есть) и файрвол:
    setsebool -P ftp_home_dir=1
    setsebool -P allow_ftpd_full_access=1
    # Firewall
    firewall-cmd --permanent --add-port=21/tcp
    firewall-cmd --add-port=21000-21020/tcp --permanent
    firewall-cmd --reload

В качестве пользователей ProFTPd может использовать как виртуальных пользователей, так и пользователей системы.

  1. Создайте FTP-пользователя:
    useradd example -d /var/www --shell /bin/false --ingroup www-data
    • example — имя FTP-пользователя.
    • /var/www — домашний каталог FTP-пользователя.
    • www-data — группа, к которой относится веб-сервер или другое приложение, которое будет использовать загружаемые файлы (www-data — группа по умолчанию для веб-сервера Apache).
  2. Предоставьте пользователю права на редактирование файлов в нужных каталогах:
    chown example:www-data -R /var/www
    • example — созданный FTP-пользователь.
    • www-data — группа, к которой относится веб-сервер или другое приложение, которое использует загружаемые файлы (www-data — группа по умолчанию для веб-сервера Apache).
    • /var/www — каталог, для которого изменяются права доступа (обычно каталог с файлами сайтов, по умолчанию /var/www).
  1. Отредактируйте файл конфигурации ProFTPd:
    nano /etc/proftpd/proftpd.conf

    Измените строки:

    • ServerName — имя сервера.
    • ServerType — режим запуска:
      • standalone — автоматический запуск при старте системы (по умолчанию).
      • inetd — только ручной запуск.
    • # DefaultRoot — уберите символ # в начале строки. Данный параметр указывает доступ к каталогу по умолчанию. Для определения доступа по умолчанию к каталогу пользователя, указывайте ~.
    • Добавьте строку UseReverseDNS off перед строкой # Use this to jail all users in their homes (по умолчанию 34 строка).
    • Проверьте корректность файла конфигурации:
      proftpd -t
  2. Перезапустите ProFTPd:
    /etc/init.d/proftpd restart
Содержание

    Комментарии

    Roman P.
    А як налаштувати так, щоб залишались права на файли та папки користувача www-data:www-data, навіть, якщо я заходжу, умовно кажучи, під логіном ftpuser1? По при такому налаштуванні, створюються нові файли від імені ftpuser1:ftpuser1 і веб-сервер www-data:www-data їх вже не може відкрити і прочитати
    verliber
    Ви можете налаштувати директиви самого ProFTPD: UserOwner або GroupOwner для вказівки власника нових файлів\каталогів, але зверніть увагу, що користувач ftpuser1:ftpuser1 може втратити до них доступ. Краще використовувати ACL для налаштування доступів до каталогу, в рамках якого працюють ftp користувачі, дозволивши доступ до файлів, незалежно від їх власника, або додати користувача ftpuser1 до групи www-data, що можна поєднати з варіантом директив.

    Додамо цю інформацію до статті.