Перейти к содержимому
www.mytechnote.ru
Меню
  • Администрирование
    • Скрипты
  • Оборудование
    • Обзоры
    • Инструкции
  • Прочее
  • Русский
    • English
    • Русский
Меню

Настройка ProFTPd для хостинга

Написано достаточно статей, как поднять и настроить LAMP.
Во многих из них есть пара абзацев, в которых кратко описывается установка и базовая настройка ProFTPd.
Как правило, для организации нормальной работы хостинга этого не хватает.
Возникает вопрос — «как настроить ftp-доступ конкретного пользователя к определенному виртуальному хосту?».

Виртуальные ftp-пользователи

Для хостинга нецелесообразно заводить пользователей в системе. Гораздо логичнее завести виртуальных ftp-пользователей.
В первую очередь нужно определиться, где будем хранить их учетные записи.
У ProFTPd есть несколько вариантов, но я рассмотрю лишь два:

  1. Альтернативный файл пользователей и паролей;
  2. СУБД MySQL.

Сразу оговорюсь, что у меня установлена система Ubuntu 10.04.
Apache работает от имени www-data, у которого UserId=33, GroupId=33.
Логи ftp-сервера по умолчанию можно посмотреть тут: /var/log/proftpd/
В руководстве я создам пользователя tester, для работы с виртуальным хостом test.ru.
 

Общая настройка ProFTPd

Открываем конфиг ProFTPd, по-умолчанию он располагается /etc/proftpd/proftpd.conf.
Из соображений безопасности добавляем в него следующие строки:

DefaultRoot ~<br>ServerIdent on "FTP Server ready."

Так рекомендовано сделать в официальном руководстве пользователя.
Остальное по умолчанию можно оставить, так как есть.
 

Хранение виртуальных пользователей в текстовом файле

Нам нужно, чтобы ftp пользователь имел возможность редактировать и удалять файлы, созданные скриптами.
Создаем нового виртуального ftp-пользователя с логином tester, идентификатором 33, группой 33 и домашним каталогом /var/www/test.ru.

ftpasswd --passwd --file=/etc/proftpd/ftpd.passwd --name=tester --uid=33 --gid=33 --home=/var/www/test.ru --shell=/bin/false

После выполнения команды система попросит ввести дважды пароль пользователя.
В итоге, у нас появится файл /etc/proftpd/ftp.passwd с записью о пользователе.
Кстати, изменить пароль пользователя можно следующей командой:

ftpasswd --passwd --name=tester --change-password

Теперь редактируем /etc/proftpd/proftpd.conf, для подключения виртуального пользователя:

RequireValidShell off<br>AuthUserFile /etc/proftpd/ftpd.passwd

Перезапускаем ftp:
/etc/init.d/proftpd restart
 

Хранение виртуальных пользователей в СУБД MySQL

Для хранения виртуальных пользователей в СУБД MySQL необходим пакет proftpd-mod-mysql.
Через PHPMyAdmin или любым другим удобным способом создаем новую базу, к примеру proftpd.
Так же создаем нового пользователя proftpd_user с паролем proftpd_password с правами на чтение этой базы.
В базе создаем одну таблицу:

CREATE TABLE `proftpd`.`users` (<br>`username` VARCHAR( 32 ) NOT NULL ,<br>`password` VARCHAR( 32 ) NOT NULL ,<br>`uid` INT NOT NULL ,<br>`gid` INT NOT NULL ,<br>`homedir` VARCHAR( 255 ) NOT NULL ,<br>`shell` VARCHAR( 255 ) NOT NULL ,<br>UNIQUE (`username`)<br>) ENGINE = MYISAM CHARACTER SET utf8 COLLATE utf8_general_ci;

И добавляем запись о пользователе:

INSERT INTO `proftpd`.`users` (`username`, `password`, `gid`, `homedir`, `shell`) VALUES (<br>'tester', 'pass', '33', '33', '/var/www/test.ru', '/bin/false' );

На этом настройка MySQL окончена.
Теперь, что касается конфигурации FTP-сервера.
Редактируем файл /etc/proftpd/modules.conf – уберем комментарий со строк

LoadModule mod_sql.c<br>LoadModule mod_sql_mysql.c

Редактируем файл /etc/proftpd/proftpd.conf.
Дописываем строку

Include /etc/proftpd/sql.conf

А так же уберем комментарий или допишем строку:

AuthOrder mod_sql.c

Файл /etc/proftpd/sql.conf приводим к следующему виду:

<IfModule mod_sql.c><br># Cообщаем, что намерены работать с СУБД MySQL<br>SQLBackend mysql<br>SQLEngine on<br># Пароли в базе храняться в открытом формате<br>SQLAuthTypes Plaintext<br># Подключаемся к БД proftpd пользователем proftpd_user с паролем proftpd_password<br>SQLConnectInfo proftpd@localhost proftpd_user proftpd_password<br># Выбираем данные из таблицы users<br>SQLUserInfo users username password uid gid homedir shell<br># Аутентифицируем пользователей из этой таблицы<br>SQLAuthenticate users*<br># По умолчанию минимальный UserID пользователя и GroupID =999<br>SQLMinUserUID 33<br>SQLMinUserGID 33<br># На время отладки пишем логи<br>SQLLogFile /var/log/proftpd/sql.log

Перезапускаем ftp:
/etc/init.d/proftpd restart

Настройка доступа ftp-пользователей к директориям

Изменяем владельца директории /var/www/test.ru

сhown www-data:www-data /var/www/test.ru

Выставляем права доступа к директории, иначе увидим permission denied

chmod 775 /var/www/test.ru

Теперь виртуальные пользователи могут создавать, редактировать и удалять файлы и папки.

Взято с http://habrahabr.ru/sandbox/26850/

Вобщем и целом, нужно добавить в proftp.conf строчки:

AuthOrder mod_auth_file.c

AuthUserFile /etc/proftpd/ftpd.passwd

AuthGroupFile /etc/proftpd/ftpd.group

RequireValidShell off

Так же нужно задать права 440 на файлики passwd и group, а так же сделать их владельцем proftpd и root

Готовый conf выглядит следующим образом:

Include /etc/proftpd/modules.conf

UseIPv6 on IdentLookups off

ServerName «server_name»

ServerType standalone

DeferWelcome off

MultilineRFC2228 on

DefaultServer on

ShowSymlinks on

TimeoutNoTransfer 600

TimeoutStalled 600

TimeoutIdle 1200

DisplayLogin welcome.msg

DisplayChdir .message true

ListOptions «-l» #DenyFilter \*.*/

DefaultRoot ~

ServerIdent on «FTP Server ready.»

AuthOrder mod_auth_file.c

AuthUserFile /etc/proftpd/ftpd.passwd

AuthGroupFile /etc/proftpd/ftpd.group

RequireValidShell off

Port 21

MaxInstances 30

User proftpd

Group nogroup

Umask 002 002

AllowOverwrite on

TransferLog /var/log/proftpd/xferlog

SystemLog /var/log/proftpd/proftpd.log

QuotaEngine off

Ratios off

DelayEngine on

ControlsEngine off

ControlsMaxClients 2

ControlsLog /var/log/proftpd/controls.log

ControlsInterval 5

ControlsSocket /var/run/proftpd/proftpd.sock

AdminControlsEngine off

Include /etc/proftpd/conf.d/

 

В файле /etc/init.d/proftpd есть баг, при команде restart сервис не рестартует, и как следствие при ротации лого он благопалучно зависает. Что бы он нормально заработал нужно заменить строчку

start-stop-daemon —stop —signal $SIGNAL —quiet —pidfile «$PIDFILE»

на

start-stop-daemon —stop —signal $SIGNAL —retry 1 —quiet —pidfile «$PIDFILE»

Опубликовано в 15.04.201530.05.2024 от sanglyb

Навигация по записям

← Настройка сети в PowerShell а так же nic teaming
Поиск бутылочного горлышка Windows →

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Подписывайтесь

Youtube
vk
telegram
github
twitter
rss
  • Форум
  • Об авторе
  • Поддержать автора

Популярные записи

Новые записи

  • Как расширить LVM раздел в Linux
  • Исправление ошибки SrsResources.dll после обновления SSRS для SCCM
  • Проблема при использовании библиотеки PassFiltEx на старых процессорах
  • Как удалить вложения из старых событий календаря в Exchange с помощью скрипта
  • Как скачать и установить Office 2024 LTSC

Архивы

  • 2026 (3)
  • 2025 (5)
  • 2024 (7)
  • 2023 (6)
  • 2022 (5)
  • 2021 (25)
  • 2020 (34)
  • 2019 (39)
  • 2018 (78)
  • 2017 (56)
  • 2016 (77)
  • 2015 (9)
© 2015-2026 www.mytechnote.ru
Использование материалов сайта возможно только с разрешения владельца или обязательна индексируемая, прямая, передающая вес ссылка на материал.