Показаны сообщения с ярлыком proftpd. Показать все сообщения
Показаны сообщения с ярлыком proftpd. Показать все сообщения

14 июня 2010 г.

Установка и настройка FTP сервера ProFTPD в Ubuntu

Этот небольшой постик посвящён установке и настройке FTP сервера ProFTPD в Ubuntu.

К написанию сподвигло отсутствие нормального пошагового руководства на чём вчера споткнулся сам :/

Всё что ниже личный опыт, пользовался также отрывочными сведениями с западных блогов и форумов.

Итак, задача.

Установить ftp сервер  ProFTPD на базе  Ubuntu в локальной сети. Сервер не анонимный, имеет авторизацию по выдаваемому администратором логину и паролю. Базы данных для авторизации не используются в данном случае, то есть никаких умопомрачительных конструкций с mysql не будет :)

Поехали.

Устанавливаем сам сервер. Я поставил тот, что идёт с репозиториев, кому хочется поставить более свежую версию - собирайте его сами с сайта.

В терминале.

sudo apt-get install proftpd-basic

Сервер устанавливаем как standalone (должно вылететь соответствующее окошко с запросом).

Далее создаём каталог, обращаю внимание на то, что я устанавливал сервер на десктоп версию убунты, так как нагрузка на него не велика 2-3 юзера в день.

Переходим в домашний каталог:


cd /home

Создаём в нём каталог ftp в котором и будут храниться наши файлы

sudo mkdir ftp

Далее вам необходимо зайти в файл

/etc/shells и проверить, есть ли там строчка

/bin/false

если нет, то добавьте её туда (здесь и далее я разжёвывать не буду уж такие простые вещи, как редактирование файла под sudo хорошо?, всё же если вы ставите сервер, то потрудитесь перед этим изучить самые основы).

Выставим права на каталог ftp в который будем заливать файлы:

cd /home

sudo chmod 777 ftp



Теперь нам надо создать пользователей с их логинами и паролями. Делается это через команду. Обратите внимание, что первой командой мы создаём группу и присваиваем данной группе конкретного пользователя, второй пользователя, хранятся эти данные в соответствующих файлах рядом с файлом конфигурации сервера в каталоге

/etc/proftpd

Первая команда - создаём группу ftp2 пользователем которой является пользователь с именем user, автоматически будет также создан файл ftpd.group


sudo ftpasswd --group --name=ftp2 --gid=50 --member=user --file /etc/proftpd/ftpd.group

Вторая команда - создаём самого пользователя user. Обратите внимание, ещё раз, что user - это логин пользователя, он может быть маша, вася, петя и так далее, короче это логин. В этой же команде задан каталог пользователя. Автоматически также при первом использовании команды будет создан файл ftpd.passwd


sudo ftpasswd --passwd --name=user --home=/home/ftp --shell=/bin/false --uid=1003 --file /etc/proftpd/ftpd.passwd

При вводе команды будет запроше пароль для пользователя, ну придумайте уж какой-нибудь.

Последние две команды выше повторяем столько раз сколько пользователей вам нужно. Кому очень хочется посмотреть куда пишутся пароли и прочее (они там будут в виде хэша) велком в каталог /etc/proftpd


Ещё раз для понимания - это не UNIX пользователи, это фактически учётные записи вашего фтп-сервера.


Далее настраиваем конфиг сервера
/etc/proftpd/proftpd.conf

Привожу свой рабочий конфиг полностью. Добавил также некоторые комментарии.

AllowOverwrite on

RequireValidShell  off
AuthUserFile  /etc/proftpd/ftpd.passwd
AuthGroupFile /etc/proftpd/ftpd.group

# Don't use IPv6 support by default.
UseIPv6                off

ServerName            "ftp-server"
ServerType             standalone
DeferWelcome            on


 #  Эти две команды убыстряют работу сервака, гуглите для подробностей.
UseReverseDNS off
IdentLookups  off

MultilineRFC2228 on
DefaultServer            on
ShowSymlinks            off

TimeoutNoTransfer 600
TimeoutStalled 100
TimeoutIdle 2200

DisplayChdir                    .message
ListOptions                    "-l"

TimeoutLogin 20

#Запрещаем подключаться на сервер как root, полезно для безопасности

RootLogin             off

# Создаём журналы
ExtendedLog             /var/log/ftp.log
TransferLog             /var/log/xferlog
SystemLog            /var/log/syslog.log
 #Запрещаем заливать на сайт файлы начинающиеся с точки, полезно для безопасности
DenyFilter            \*.*/

# Используем файлик /etc/ftpusers в нём перечислены те пользователи, которым запрещено входить на сервер, полезно для безопасности
UseFtpUsers on

# Разрешаем докачивать файлы
AllowStoreRestart        on

# задаём порт, на котором будет работать сервак, обычно 21
Port                21

#  Против DDOS атаки, полезно для безопасности
MaxInstances 8

# Сервер запускается и работает под этим пользователем и группой
User                  nobody
Group                 nogroup

# Umask 022 is a good standard umask to prevent new files and dirs
# (second parm) from being group and world writable.
Umask                022    022

MaxClients 8
MaxClientsPerHost 8
MaxClientsPerUser 8
MaxHostsPerUser 8

# Сообщение после успешного захода на сервер
AccessGrantMsg "Welcome to Server"
#Идентификатор сервера, показывается всем при заходе на сервер
ServerIdent                  on       "privet :))"

# Устанавливаем домашний каталог
DefaultRoot /home/ftp

# Запираем всех в домашнем каталоге, чтобы не могли просмотреть каталоги выше, важно для безопасности
DefaultRoot ~

MaxLoginAttempts    5
#VALID LOGINS
<Limit LOGIN>
AllowUser user
DenyALL
</Limit>

<Directory /home/ftp>
Umask 022 022
AllowOverwrite on
</Directory>

Перезапускаем сервер:



/etc/init.d/proftpd start

Всё должно работать.

2 января 2010 г.

Некоторые аспекты установки FTP сервера ProFTPD с поддержкой кодировки CP1251

Очередная напоминалка для самого себя.

Задача.

Понадобилось мне развернуть FTP сервер на домашнем серваке под управлением Opensuse

Подключаться будут Windows клиенты, поэтому кодировка документов для Windows клиентов должна отображаться правильно. Это основное с чем бился, поэтому на этом внимание и заострю.

Качаем последнюю версию с http://www.proftpd.org/

Распаковываем её в удобный для себя каталог, стандартно заходим в этот каталог через терминал.

Далее небольшой трюк.

Конфигурируем с помощью вот такой команды:

./configure --enable-nls
Она подключает дополнительный модуль mod_lang, который при установке из репозитория по умолчанию выключен.

Далее, как обычно:

make make install

Для того, чтобы врубить перекодировку из utf-8 в CP1251 на лету в конфиг добавляем следующее:
{IfModule mod_lang.c}
    UseEncoding utf8 cp1251
  {/IfModule}
Примечание: скобки замените  { и }  замените на < и >

Всё.... после этого Windows клиенты будут видеть файлы на FTP в нормальной кодировке через свои браузеры, без кракозябриков. На Linux клиентах (люди, обычно, продвинутые :))) придётся переключить кодировку вручную на CP1251 это легко делается в распространённых FTP клиентах типа FileZilla.

Кстати, если таких тонкостей не требуется, то можно банально воспользоваться стандартной утилитой Yast и в три клика сконфигурировать себе FTP сервер (но вот с кодировкой будет проблема :/ )