21 сентября 2011 г.

WEB-сервер на Linux. Часть 4 - Установка и настройка FTP

В этой части я рассмотрю настройку FTP для наших нужд, а именно, для удаленного доступа к папке с сайтом по протоколу FTP. Для решения поставленной задачи я буду использовать ProFTPD.

Для начала установим FTP-сервер:
$ sudo apt-get install proftpd

В качестве типа запуска для сервера указываем "самостоятельно".

Существует два способа организации доступа к ресурсам FTP-сервера: на основе пользователей ОС и на основе виртуальных пользователей ProFTPD.
Я буду использовать первый вариант. Такой подход требует определенных мер безопасности, как минимум:
  • исключить возможность пользователей FTP входить в систему
  • запретить пользователям покидать пределы своего домашнего каталога

Подготовка системы
Запретить пользователям входить в систему можно подсунув им специальную несуществующую командную оболочку, например /bin/false. Для этого сначала необходимо добавить в список доступных оболочек (/etc/shells) новую оболочку, которая будет использоваться пользователями FTP. Структура файла такова, что каждая строка соответствует одной записи оболочки:
$ sudo echo "/bin/false" >> /etc/shells

Создадим папку в которой будем располагать домашние каталоги пользователей FTP. Я выбрал для этого папку /var/ftp, по причине того, что в моей системе каталог /var находится на отдельном LVM-разделе и если пользователи вдруг забьют его до отказа, это не сильно повлияет на работу системы.
$ sudo mkdir -p /var/ftp/gkb1
$ sudo chmod 755 /var/ftp

Создание пользователя
Далее необходимо создать пользователя для FTP сервера. В качестве домашнего каталога укажем для него созданный ранее каталог (/var/ftp/gkb1), а в качестве шелла - /bin/false. Вместо pass надо указать пароль с которым пользователь будет подключаться к FTP (вводить только цифры запрещено):
$ sudo useradd gkb1ftp -p pass -d /var/ftp/gkb1 -s /bin/false

Настраиваем разрешения для домашней папки:
$ sudo chown gkb1ftp /var/ftp/gkb1
$ sudo chmod 755 /var/ftp/gkb1

А теперь примонтируем в домашнюю папку /var/ftp/gkb1 содержимое папки /var/www/gkb1, это позволит пользователю gkb1ftp управлять содержимым нашего сайта, имея доступ только к своей домашней папке. Для этого добавим соответствующую запись в /etc/fstab, предварительно его забэкапив, и используем команду mount:
$ sudo cp /etc/fstab /etc/fstab.old
$ sudo echo "/var/www/gkb1 /var/ftp/gkb1 none bind 0 0" >> /etc/fstab
$ sudo mount /var/www/gkb1

Наконец, необходимо добавить нового пользователя в группу web-мастеров нашего сайта, созданную во второй части этой эпопеи. Для этого необходимо добавить логин пользователя в файл /etc/group в конец строки с названием группы. На всякий случай напомню, в первую очередь себе, что пользователи групп перечисляются через запятую. В итоге, строка с описанием нашей группы web-мастеров будет выглядеть так:
webmasters-gkb1:x:1002:operator,gkb1ftp

Настройка ProFTPD
Бэкапим конфиг по умолчанию и создаем свой:
$ sudo mv /etc/proftpd/proftpd.conf /etc/proftpd/proftpd.conf.old
$ sudo vim /etc/proftpd/proftpd.conf

Реализовать вторую меру безопасности запрещающую покидать пределы домашнего каталога, упомянутую выше, можно как раз в конфиге ProFTPD, указав параметру DefaultRoot значение ~ (тильда). В моем случае, конфиг, написанный на основе дефолтного конфига, имеет
следующий вид:

Настройка закончена, теперь можно перезапускать сервер:
$ sudo service proftpd restart


Источники информации
  1. FTP-Сервер В Ubuntu 10.04
  2. Официальное руководство по ProFTPD
  3. ProFTPD Config

Комментариев нет:

Отправить комментарий