Совсем недавно заглючил некий скрипт на пыхе. Скрипт был покупной, именно поэтому я решил не разбираться с ним, а напрямую обратиться в саппорт продавца для выяснения проблемы. Саппорт ответил коротко: нужен доступ к FTP - будем посмотреть. И вот тут я завис на пол минуты…

Ведь фтп на моём Кенте не установлен, потому как работаю то я под SSH. Да ещё и авторизируюсь не под паролем, а под сертификатом . Не могу же я просто так взять, и дать SSH-ключ, под которым потом можно будет входить на сервер постоянно. Да и даже если включить временно вход по паролю, зачем саппорту конкретного скрипта под конкретную кмс видеть весь мой сервер и то, что на нём расположено?

Ну, думаю, как раз для таких особых случаев нужно фтпишечку то и поднять.

К счастью, на деле оказалось всё довольно быстро и просто, и даже с выбором определился в раз - «vsftpd» (Very Secure FTP Daemon). Быстрый. Секурный. Кросплатформенный. Лёгок как в установке, так и в настройке. Иными словами - один из лучших FTP-серверов.

Устанавливаем & настраиваем vsftpd

$ yum install vsftpd

После чего правим главный конфигурационный файл, в котором нужно:

  1. Изолировать пользователей в их домашней директории.
  2. Запретить анонимный доступ.
$ nano /etc/vsftpd/vsftpd.conf
1
2
chroot_local_user=YES
anonymous_enable=NO

Настраиваем пользователей vsftpd

Здесь важно понять один очень интересный момент: лишних FTP-пользователей добавлять не нужно, они уже есть. А добавлялись пользователи именно тогда, когда мы при установке AMP на CentOS. Иными словами - пользователь уже имеет полный доступ на его домашний каталог , остаётся лишь подредактировать его для возможности авторизации под vsftpd.

Например, нам нужен FTP-доступ к директории /var/www/vhosts/сайт на сервере, владельцем которой является пользователь almostover . Делаем следующее:

  1. Смотрим список пользователей и меняем стандартную домашнюю директорию на нужную нам.
  2. Задаём пользователю пароль для FTP-логина.

Назначаем домашнюю директорию

$ nano /etc/passwd
1
2
-almostover:x:500:500::/home/almostover:/bin/bash
+almostover:x:500:500::/var/www/vhosts/сайт:/sbin/nologin

Также следует заменить /bin/bash на /sbin/nologin , для запрета на доступ пользователя к системе .

Задаём пользователю пароль

$ passwd almostover

Запускаем vsftpd

И только после того, как будут произведены все вышеописанные настройки, запускаем сам FTP-сервер.

$ service vsftpd start

И если планируем пользоваться FTP-сервером на постоянной основе, не забываем добавить в автозагрузку.

$ chkconfig vsftpd on

Заключение о FTP-сервере

Пользоваться ли FTP на постоянной основе или нет, решать лично каждому.

С одной стороны, если Вы планируете работать с одним определённым каталогом (сайтом), тогда неплохим плюсом здесь будет то, что Вам не придётся постоянно chown -нить свежезакачанные файлы или директории. Все операции будут производиться от имени текущего пользователя и, соответственно, все права по-умолчанию будут назначаться ему.

С другой стороны, лично моя цель поднятия ФТП была озвучена в самом начале: когда нужно дать кому-то временный доступ к определённой изолированной директории на сервере/определённому сайту:

  1. Меняю пароль от выдаваемого логина.
  2. Запускаю vsftpd.
  3. Даю логин и пароль от FTP.
  4. Останавливаю vsftpd.
  5. Меняю пароль ещё раз от этого же логина (на случай, если в следующий раз будет выдан другой логин).

Никаких SSH.
Никаких лишних директорий.
Всё предельно разумно и максимально безопасно.