В этой части я рассмотрю настройку FTP для наших нужд, а именно, для удаленного доступа к папке с сайтом по протоколу FTP. Для решения поставленной задачи я буду использовать ProFTPD.
Для начала установим FTP-сервер:
$ sudo apt-get install proftpd
В качестве типа запуска для сервера указываем "самостоятельно".
Существует два способа организации доступа к ресурсам FTP-сервера: на основе пользователей ОС и на основе виртуальных пользователей ProFTPD.
Я буду использовать первый вариант. Такой подход требует определенных мер безопасности, как минимум:
Подготовка системы
Запретить пользователям входить в систему можно подсунув им специальную несуществующую командную оболочку, например /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
Источники информации
Для начала установим FTP-сервер:
$ sudo apt-get install 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
Источники информации
Комментариев нет:
Отправить комментарий