пятница, 28 июня 2013 г.

Настройка FTP в Zentyal

 Так уж получилось что пришлось мне в один момент очень быстро поднять FTP на zentyal сервере, который использовался как контролер домена. Задача вроде бы не сложная но все же несколько подводных камней я обнаружил, о том и рассказ.



 Итак, в Zentyal уже установленны компоненты для создния FTP сервера, чтож установим их, для этого идем в "Управление программным обеспечением" -> "Компоненты Zentyal", находим в списке FTP и устанавливаем его. После установки у нас появляется пункт меню "FTP", но перед тем как туда отправится включим FTP в пункте меню "Статус Модуля". Теперь смело идем в "FTP" и понимаем что там никаких настроек то и нет толком, все что мы можем там настроить - это "Анонимный доступ", "Доступ пользователей к их домашним каталогам" и "Поддержка SSL". Я отключил анонимный дотуп, открыл пользователям доступ к ним в каталог, и отключил поддержку SSL.
 FTP сервер готов, мы можем его протестировать зайдя с другого компьютера с помощью любого FTP клиента, однако такой фтп мало кого устроит, пользователь бродит по всему серверу, у нас отсутствует общий доступ к каким либо ресурсам и т.д. Чтож придется править конфиги:
просто исправить /etc/vsftpd.conf у нас не получится, точнее получится то полуится, но после перезагрузки конфиг вернется в изначальное свое состояние, это связанно с тем что zentyal востанавливает состояние конфигов по шаблонам, которые находятся в /usr/share/zentyal/stubs/
В этом каталоге нас интересует папка FTP и файл vsftpd.conf.mas являющийся шаблоном /etc/vsftpd.conf, соответсвенно при установке FTP сервера vsftpd на другую ОС, например, на Ubuntu искать шаблоны не нужно, просто правим /etc/vsftpd.conf
 Опишу некоторые моменты этого конфига (взято  из http://interface31.ru/tech_it/2012/02/prostoy-ftp-server-na-baze-ubuntu.html ):
Сервер может быть запущен постоянно, как служба или стартовать при необходимости, в данном случае сервер запущен постоянно:
listen=YES

Разрешим вход только локальным пользователям:
anonymous_enable=NO
local_enable=YES

Разрешим пользователям записывать файлы и укажем серверу автоматически выставлять нужные права (755 на папки и 644 на файлы):
write_enable=YES
local_umask=022

По умолчанию сервер использует время GMT, чтобы файлам устанавливалось время вашего часового пояса используйте опцию:
use_localtime=YES

Включим лог загружаемых и скачиваемых файлов:
xferlog_enable=YES

В целях безопасности разрешим серверу устанавливать соединения для передачи данных только на порт 20:
connect_from_port_20=YES

Зададим таймаут неактивной сессии:
idle_session_timeout=600

Также в целях безопасности изолируем пользователя в его домашнем каталоге:
chroot_local_user=YES

Все остальные опции оставляем по умолчанию, хотя можете отредактировать приветствие сервера, написав там все что вам нравится:
ftpd_banner= Ku-ku, This is FTP-server

Zentyal очень часто после того как мы заблокируем пользователя в домашнем каталоге перестает разрешать конект к серверу, эту проблему мы решим немного позже, а пока создадим пользователей и группы, отличное описание как это сделать дали тут

Из-за того что вышеназванный сайт периодически падает позволю себе скопировать информацию сюда (стилистика автора сохранена):

Далее лезем в /etc/shells:
sudo gedit /etc/shells
В конец добавляем строку:
/bin/false
Сохраняем, закрываем.
Теперь надо создать 2 группы, одна группа (web-users) будет для пользователей, другая (web-developers) для разработчиков
sudo addgroup web-users && sudo addgroup web-developers
Окей, для полноты картины надо бы добавить сервер apache в каждую из созданных групп (по умолчанию apache работает под пользователем www-user):
sudo useradd www-user web-users && sudo useradd www-user web-developers
Добавили. Теперь можно заняться самими пользователями. Создадим папки для будущих пользователей. Для удобства в папке /home я создаю папки для каждой из групп:
sudo mkdir /home/web-developers && sudo mkdir /home/web-users
Теперь предположим что логины наших пользователей – user1, dev1, dev2 создадимпапки для пользователей:
sudo mkdir /home/web-users/user1
sudo mkdir /home/web-developers/dev1
sudo mkdir /home/web-developers/dev2
Теперь создадим пользователей а заодно сразу раскидаем их по нужным группам:
sudo useradd user1 -g web-users -p наш-пароль -d /home/web-users/user1 -s /bin/false
sudo useradd dev1 -g web-developers -p наш-пароль -d /home/web-developers/dev1 -s /bin/false
sudo useradd dev2 -g web-developers -p наш-пароль -d /home/web-developers/dev2 -s /bin/false
Замечание: не делайте пароль состоящий только из цифр он не будет работать (если все таки сделали, переназначьте его через команду passwd имя пользователя).
Такая конструкция создаст пользователей которые не смогут авторизоваться в системе, однако смогут использовать ftp сервер как положено.
Теперь назначим пользователей владельцами папок созданных ранее:
sudo chown user1:web-users /home/web-users/user1
sudo chown dev1:web-developers /home/web-developers/dev1
sudo chown dev2:web-developers /home/web-developers/dev2
Предположим, что есть 2 сайта которые лежат в /var/www – site1.com и site2.comпервый принадлежит пользователю, а второй находится на разработке у программеров. Чтобы раздать эти сайты необходимо промонтировать их в домашние директории пользователей. Для этого необходимо сначала создать соответствующие папки в домашних папках пользователей, а потом уже примонтировать туда файлы наших сайтов.
sudo mkdir /home/web-users/user1/site1.com
sudo chown user1:web-users /home/web-users/user1/site1.com
sudo mkdir /home/web-developers/dev1/site2.com
sudo chown dev1:web-developers /home/web-developers/dev1/site2.com
sudo mkdir /home/web-developers/dev2/site2.com
sudo chown dev2:web-developers /home/web-developers/dev2/site2.com
Теперь добавляем точку монтирования для каждого из пользователей, для этого правим fstab:
sudo gedit /etc/fstab
Добавляем нужные пути:
/var/www/site1.com /home/web-users/user1/site1.com none bind 0 0
/var/www/site2.com /home/web-developers/dev1/site2.com none bind 0 0
/var/www/site2.com /home/web-developers/dev2/site2.com none bind 0 0
UPDATE:
Иногда после проделывания всех вышеуказанных действий подключиться к ftp все еще не представляется возможным. Просто пишет login incorrect и все тут. Для того чтобы все заработало меняем для пользователся пароль на любой другой (или даже на такой же) выполнив команду sudo passwd имя пользователя. После смены пароля все заработает в штатном режиме.
Остается только убрать ошибку при которой Zentyal не хотел запирать пользователя в своей
папке:

1. apt-get install python-software-properties

2. sudo add-apt-repository ppa:thefrontiergroup/vsftpd

3. sudo apt-get update

4. sudo apt-get install vsftpd

5. vim /etc/vsftpd.conf или для Zentyal vim /usr/share/zentyal/stubs/ftp/vsftpd.conf.mas
и добавляем в конец файла
allow_writeable_chroot=YES

6. sudo service vsftpd restart

Все, фтп сервер готов, остается по аналогии добавлять ваших пользователей и монтировать общие папки.

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

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