Проблема
Все веб-сайты нашей компании расположены на высокопроизводительном веб-сервере, включая несколько проектов для разработки и только для внутреннего использования.
Некоторые из наших сайтов являются общедоступными, и их нужно регулярно обновлять. Эти обновления производятся сторонней фирмой, занимающейся поисковой оптимизацией / дизайном.
Мне нужно настроить одну учетную запись FTP, которую сторонняя фирма может использовать для доступа ТОЛЬКО к этим сайтам через FTP (или, в идеале, SFTP), чтобы изменять там файлы. Я НЕ хочу, чтобы у них был какой-либо доступ к остальной части нашего сервера или другим нашим веб-сайтам.
пример
Чтобы проиллюстрировать мою ситуацию, давайте на мгновение предположим, что у меня есть четыре веб-сайта, настроенные как виртуальные хосты в Apache:
internalsite1.com
internalsite2.com
contentsite1.com
contentsite2.com
Они существуют на моем сервере в следующих местах:
/var/www/html/
/internalsite1.com
/internalsite2.com
/contentsite1.com
/contentsite2.com
Теперь мне нужны хосты «contentite», чтобы разрешить доступ через учетную запись FTP для изменения файлов. Хосты "внутреннего сайта" должны быть доступны только пользователям, которые вошли в систему (то есть через стандартный SSH).
** Что я пробовал **
Ранее сегодня я экспериментировал с изменением моей конфигурации SSH для создания пользователей с chroot-доступом, используя internal-sftp
и ChrootDirectory
особенности OpenSSH. Однако конфигурация становилась очень сложной, и я не мог рисковать нарушить SSH-доступ к моему серверу, поэтому я отказался от этого подхода.
В настоящее время я пытаюсь понять, как использовать vsftpd
для достижения своей цели; но пока я могу настроить только одну учетную запись с доступом к одному каталогу. Вероятно, этого было бы достаточно, но vsftpd имеет множество опций и нет четкой документации по достижению этой конкретной настройки.
Вопрос
Как я могу включить одну учетную запись пользователя ftp для доступа к нескольким расположениям каталогов на сервере, по одному для каждого?
Заметка: Ссылки на Чисто обучающие программы приветствуются.
РЕДАКТИРОВАТЬ: Хотя я бы предпочел, чтобы они входили в систему через SFTP, я бы согласился на обычный FTP-доступ. Мне просто нужно создать одну учетную запись FTP на сервере, которая имеет доступ к каждому из трех рассматриваемых местоположений веб-сайтов.
Вот руководство для установки и настройки scponly
, пакет, который предоставляет альтернативную оболочку входа в систему. Основная идея заключается в том, что вы устанавливаете оболочку входа пользователя в /usr/bin/scponly
, и тогда этот пользователь может использовать только SFTP или SCP; он / она не может получить оболочку командной строки.
В scponly
пакет также предоставляет возможность chroot, включая вторую альтернативную оболочку входа в систему (/usr/sbin/scponlyc
) и небольшая дополнительная настройка. Обязательно прочитайте там всю ветку форума, так как некоторые дополнительные советы дают другие в ответ на основную статью.
Руководство в некоторой степени специфично для Ubuntu, но оно также должно работать с Debian или любым дистрибутивом, производным от Debian. Если в вашем Linux нет ни одного из них, вы все равно сможете загрузить исходный код, скомпилировать его самостоятельно и затем выполнить шаги, описанные в руководстве.
Рассмотрите возможность chroot для пользователей. Вот руководство для Ubuntu, но его можно адаптировать.