Author Topic: Настройка FTP в Zentyal  (Read 3445 times)

leomuz

  • Zen Apprentice
  • *
  • Posts: 3
  • Karma: +0/-0
    • View Profile
Настройка FTP в Zentyal
« on: January 07, 2014, 03:42:44 pm »
Стандартными средствами такое возможно или только конфиги править? Таки из коробки настроек собственно НОЛЬ.
Мне лично необходимо решить на ftp такую задачу;
есть манагер у которого по N клинтов, ну минимум по 30-40, собственно если для для каждого клиента буду заводить отдельную папку на ftp но мен что то не имеет желания 10 манагеров по 40 уже 400. Т.о. Необходимо чтобы клиент манагера мог выкладывать на ftp материалы и забирать их c c ftp на согласование, как это реализовать, какими правами на папку манагера или... Собственно надо еще чтобы клиент мог смотреть и брать только свои файлы, но не мог что либо делать с файлами другого  клиента манагера.

Quote
PS: закину пока сюда более менее настройку ОТСЮДА http://elshurito.blogspot.ru/2013/06/ftp-zentyal.html  ручками пусть будет

Настройка 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

Все, фтп сервер готов, остается по аналогии добавлять ваших пользователей и монтировать общие папки.
« Last Edit: January 07, 2014, 07:27:06 pm by leomuz »