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, що можна поєднати з варіантом директив.

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