Настройка ftp сервера proftpd в ubuntu 14.04 LTS

Сегодня будем настраивать свой локальный ftp сервер. FTP — file transfer protocol, то есть — протокол передачи файлов (по сети). Это по сути и будет ответом на вопрос — «Зачем его устанавливать и настраивать» — чтобы потом удобно использовать для передачи файлов по сети. Особенно это удобно при работе с проектом (сайтом, например) в IDE (синхронизация по ftp), а так же, если мы будем работать с WordPress, то все полуавтоматические обновления движка, плагинов, тем и т.д. выполняются по ftp. Вывод — штука нужная, хотя бы один раз посмотреть, разобраться и попробовать — стоит.

Формулируем задачу:

  • установить фтп-сервер proftpd
  • настроить сервер
  • проверить или работает

Как обычно, делюсь видео в котором эти шаги пройдены, а далее текстом поясню и дополню некоторые моменты.

Установка Proftpd (proftp — название, d в конце говорит нам, что это демон, кто такие демоны в linux — спрашивать google) выполняется командой:

После установки — редактируем конфигурацию сервера, изменяем настройки по умолчанию, чтобы настроить авторизацию на сервере (подключение к серверу используя логин + пароль). Редактировать будем файл proftpd.conf, который находится в папке /etc/proftpd/, с помощью mc edit, как это делалось раньше — пример редактирования.
Нам нужно изменить в файле два параметра:

  • раскоментировать строку DefaultRoot ~ (для этого нужно просто удалить символ коментария — #)
  • добавить вниз файла строку — AuthUserFile /etc/proftpd/ftpd.passwd (в этом файле и будут храниться настройки авторизации пользователей ftp сервера)

После изменений в файле, нужно еще подредактировать файл /etc/shells, в котором добавить строку — /bin/false. Если хотите узнать, кто такие shells — гоу в google, сейчас это отнимет много времени и уведет в сторону, однако это нужно для создания «виртуальных пользователей ftp».

Еще две команды, чтобы дать доступ и возможность записывать, читать и изменять файлы на сервере:

  • addgroup ftp www-data (добавляем пользователя ftp в группу пользователей www-data,грубо говоря, таким образом сможем работать с файлами которые принадлежат веб-серверу)
  • chown -R ftp:www-data /var/www/ (chown — change owner, изменяем права владения на папку с файлами рекурсивно (флаг -R, то есть для папки и всех вложенных файлов и папок), чтобы владельцем файлов стал пользователь ftp и групповой доступ имела группа пользователей www-data (группа пользователей веб-сервера)).

Тонкости и нюансы прав доступов нужно изучать отдельно, читайте man, читайте google, а мы идем дальше.

После редактирования и настроек нужно перезагрузить сервер.

  • sudo /etc/init.d/proftpd restart

Когда все готово, самое время создать первого виртуального пользователя. В видео я использую команду:

  • ftpasswd —passwd —file=/etc/proftpd/ftpd.passwd —name=wordpress —shell=/bin/false —home=/var/www/html —uid=107 —gid=33

разберем по частям

  • ftpasswd — утилита для работы с AuthUserFile
  • —passwd — ключ, который говорит, что мы хотим создать пользователя и защитить подключение к серверу паролем
  • —file — ключ, который показывать в каком файле будут храниться данные (путь к файлу, в нашем случае /etc/proftpd/ftpd.passwd)
  • —name — имя пользователя
  • —shell — шелл (оболочка, в нашем случае /bin/false — несуществующая оболчка для виртуального пользователя)
  • —home — домашний каталог — папка доступ к которой мы будем предоставлять, обычно каталог с сайтом
  • —uid — id пользователя ftp (узнать id вашего пользователя можно выполнив в консоли команду «id ftp» — результат вернет id пользователя и покажет id группы)
  • —gid — id группы, мы используем 33 — это ид группы www-data

Теперь должно стать более понятно, что делает строка (команда) выше. После ее запуска, сервер должен попросить нас ввести пароль (дважды), который он зашифрует и сохранит в файле /etc/proftpd/ftpd.passwd

После выполнения команды — перезапускаем сервер, для примера я делаю это еще одним из возможных путей, используя команду:

  • sudo service proftpd restart

Проверка статуса сервера осуществляется с помощью команды

  • sudo service proftpd status

Если заметите, что сервер не запущен, просто выполните

  • sudo service proftpd start

а затем снова проверьте статус

Самое время переходить к проверке. Я использую TotalCommander для создания ftp-соединения из моей локальной ОС Windows к серверу ubuntu с proftpd. Есть и другие ftp-клиенты, тут уже пользуйтесь тем, что вам больше нравится и подходит под решение ваших задач.

Итого, нужно создать подключение к серверу:

  • протокол соединения — ftp
  • имя соединения — произвольное
  • ip-адрес — в моем случае 192.168.1.225, а у вас — это адрес, который вы вводили при настройке сети (адрес сервера, а еще это тот же адрес, который мы используем для подклчения через putty)
  • имя пользователя или учетная запись (не root, того пользователя которого создавали командой выше ftpasswd …)
  • пароль виртуального пользователя, созданного командой выше

Если все хорошо, вы увидите содержимое каталога к которому вы открыли доступ, а вот если нет — как это произошло у меня — придется покопаться. В видео показано, как я смотрю лог фтп-сервера (лог это документ в который пишется хронология работы сервера), чтобы разобраться в чем причина и почему пользователь не может подключиться к серверу.

Короткая хронология: пользователь не мог подключиться, потому что сервер не видел, чо доступ этому пользователю открыт. А доступ нельзя было прочитать, потому что у сервера не было доступа на чтение файла с виртуальными пользователями — ftpd.passwd. Чтобы разрулить эту ситуацию быстро и малой кровью, я сделал не очень правильно — изменил конфигурацию сервера, чтобы он запускался от суперпользователя root. Для тестового окружения — этого более чем достаточно. Перезапуск сервера, проверка все ли работает и видим результат — доступ к каталогу сервера с файлами index.html и index.php по ftp.

Первый кейс, когда не все и не сразу заработало =). Появляются первые настоящие заморочки при работе с сервером. Мое личное мнение — это тот минимум, который все же нужно знать о сервере и не стоит избегать подобных ситуаций.

Итог:

  • работающий ftp-сервер
  • знакомство (поверхностно) с демонами Linux, логами событий
  • подготовлен фундамент для удобной синхронизации по ftp
  • готовы переходить к следующему шагу — установке WordPress