К написанию сподвигло отсутствие нормального пошагового руководства на чём вчера споткнулся сам :/
Всё что ниже личный опыт, пользовался также отрывочными сведениями с западных блогов и форумов.
Итак, задача.
Установить ftp сервер ProFTPD на базе Ubuntu в локальной сети. Сервер не анонимный, имеет авторизацию по выдаваемому администратором логину и паролю. Базы данных для авторизации не используются в данном случае, то есть никаких умопомрачительных конструкций с mysql не будет :)
Поехали.
Устанавливаем сам сервер. Я поставил тот, что идёт с репозиториев, кому хочется поставить более свежую версию - собирайте его сами с сайта.
В терминале.
sudo apt-get install proftpd-basic
Сервер устанавливаем как standalone (должно вылететь соответствующее окошко с запросом).
Далее создаём каталог, обращаю внимание на то, что я устанавливал сервер на десктоп версию убунты, так как нагрузка на него не велика 2-3 юзера в день.
Переходим в домашний каталог:
cd /home
Создаём в нём каталог ftp в котором и будут храниться наши файлы
sudo mkdir ftp
Создаём в нём каталог 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
Всё должно работать.
18 комментариев:
При такой конфигурации все пользователи будут хранить свои файлы в одной общей папке?
Да это одна папка, у меня такая пока необходимость, попозже сделаю вариант конфигурации с разными папками. Возможности конфигурирования очень богатые у этого сервера.
Хороший мануал.Спасибо.В 10.04 надо standolone заменить initd
ProFTPd warning: cannot start neither in standalone nor in inetd/xinetd mode. Check your configuration.
ProFTPd предупреждение: не может запуститься ни в автономном ни в Inetd/Xinetd режиме. Проверьте конфигурацию.
Вот что получилось
К сожалению потребности в фтп у меня нет сейчас, поэтому проверить повторно не могу, но у меня данная конфигурация полностью работала.
Проверяйте настройки, гуглите.
норм статья. Тольково написано. Завелось с первого раза. Только один вопрос- если например я создал пару пользователей п1,п2,п3 как мне удалить например пользователя2?
Ох... фишка в том, что я сейчас не пользую фтп - отпала надобность, поэтому могу посоветовать только глянуть
/etc/proftpd
что там? файлик там должен быть с хэшами паролей юзеров, вроде так.
Задача видимо сведётся к удалению соответствующего юзера из файла и всё.
Ребят, man passwd, файл для ProFTPd работает аналогично. И не забывайте юзать файл ftpasswd из папки contrib дистрибутива proftpd.
ребятки че то я ни как не могу въехать! все сделал по мануалу! все заработало! только не пойму что в Браузере нужно вписывать! "ftp://... а вот че дальше? да и после команды /etc/init.d/proftpd start, вроде все поднялось, ввожу команду "ps aux" и не вижу процесса ftp!? почему?
Как сделать чтобы пользователи не видели чужих папок?
Получаю вот такое сообщение об ошибке:
Статус: Соединяюсь с 23.23.241.114:21...
Статус: Соединение установлено, ожидание приглашения...
Ответ: 220 ProFTPD 1.3.4a Server ready.
Команда: USER user
Ответ: 331 Password required for user
Команда: PASS *******
Ответ: 230 Welcome
Команда: SYST
Ответ: 215 UNIX Type: L8
Команда: FEAT
Ответ: 211-Features:
Ответ: LANG en-US.UTF-8*;en-US
Ответ: MDTM
Ответ: MFMT
Ответ: TVFS
Ответ: UTF8
Ответ: MFF modify;UNIX.group;UNIX.mode;
Ответ: MLST modify*;perm*;size*;type*;unique*;UNIX.group*;UNIX.mode*;UNIX.owner*;
Ответ: REST STREAM
Ответ: SIZE
Ответ: 211 End
Команда: OPTS UTF8 ON
Ответ: 200 UTF8 set to on
Статус: Соединение установлено
Статус: Получение списка каталогов...
Команда: PWD
Ответ: 257 "/" is the current directory
Команда: TYPE I
Ответ: 200 Type set to I
Команда: PASV
Ошибка: Превышено время ожидания соединения
Ошибка: Не могу получить список каталогов!
Ставил vsftpd точно такаяже ситуация, в чём может быть проблема??
Получаю такое сообщение об ошибке:
Статус: Соединяюсь с 23.23.241.114:21...
Статус: Соединение установлено, ожидание приглашения...
Ответ: 220 ProFTPD 1.3.4a Server ready.
Команда: USER user
Ответ: 331 Password required for user
Команда: PASS *******
Ответ: 230 Welcome
Команда: SYST
Ответ: 215 UNIX Type: L8
Команда: FEAT
Ответ: 211-Features:
Ответ: LANG en-US.UTF-8*;en-US
Ответ: MDTM
Ответ: MFMT
Ответ: TVFS
Ответ: UTF8
Ответ: MFF modify;UNIX.group;UNIX.mode;
Ответ: MLST modify*;perm*;size*;type*;unique*;UNIX.group*;UNIX.mode*;UNIX.owner*;
Ответ: REST STREAM
Ответ: SIZE
Ответ: 211 End
Команда: OPTS UTF8 ON
Ответ: 200 UTF8 set to on
Статус: Соединение установлено
Статус: Получение списка каталогов...
Команда: PWD
Ответ: 257 "/" is the current directory
Команда: TYPE I
Ответ: 200 Type set to I
Команда: PASV
Ошибка: Превышено время ожидания соединения
Ошибка: Не могу получить список каталогов!
Ставил vsftpd такая же ситуация, в чём может быть проблема?
Спасибо! Хороший мануал. Подскажите, а как создать еще одного пользователя, но с другой домашней директорией.
Андрей, у меня уже давно потребности нет в FTP, так что к сожалению подсказать не могу, запостите вопрос вот здесь
http://forum.ubuntu.ru/index.php?board=62.0
думаю ребята подскажут.
Хороший мануал, долго искал подобный. Спасибо автору. С первого раза все получилось.
Спасибо!
а когда будет вариант конфигурации с разными папками?
good post admin keep it up
5 Instant Approval Site (DoFollow Backlink)
Отправить комментарий