Нетривиальное прикручивание морды Proftpd Administrator к серверу Proftpd на фрибсд

http://it.icmp.ru/postimages/1474/7228/thumb/proftpd_administrator.jpg


ProFTPd стал модульным, в связи с этим морда Proftpd Admin отказалась прикручиваться с квотированием (не забываем, что теперь поддержка mysql в proftpd собирается из порта /databases/proftpd-mod_sql_mysql и загружаемые модули ручками прописываются в pfoftpd.conf с правильной последовательностью загрузки, в соответствии с зависимостями модулей относительно друг друга).
Например (в proftpd.conf):

ModulePath /usr/local/libexec/proftpd
LoadModule mod_sql.c
LoadModule mod_sql_mysql.c
LoadModule mod_sql_passwd.c
LoadModule mod_sql_tds.c
LoadModule mod_wrap2.c
LoadModule mod_wrap2_sql.c
LoadModule mod_unique_id.c
LoadModule mod_site_misc.c
LoadModule mod_shaper.c
LoadModule mod_rewrite.c
LoadModule mod_readme.c
LoadModule mod_ratio.c
LoadModule mod_qos.c
LoadModule mod_ifversion.c
LoadModule mod_ifsession.c
LoadModule mod_exec.c
LoadModule mod_dynmasq.c
LoadModule mod_deflate.c
LoadModule mod_ctrls_admin.c
LoadModule mod_copy.c
LoadModule mod_ban.c
LoadModule mod_quotatab.c
LoadModule mod_quotatab_sql.c
LoadModule mod_sftp.c
LoadModule mod_sftp_pam.c
LoadModule mod_sftp_sql.c
LoadModule mod_tls.c
LoadModule mod_tls_memcache.c
LoadModule mod_tls_shmcache.c


Анонимных пользователей в файле конфига прописывать не будем (квотирование анонимных пользователей proftpd делать не умеет). Поэтому создадите позже учетку через морду, например ftp:ftp (и ручками перебьете папку анонимуса + выставите права на запись, отключив чтение. для того чтоб не потерли имеющиеся файлы залитые другим анонимусом)

Директория сайта прописывается так /позволим всем все читать и качать, но запись будет только в папке пользователя/ (в proftpd.conf):

<Directory /ftp/*>
<Limit READ>
AllowAll
</Limit>
</Directory>


Права на ФТП папку в системе выставляем на 775 (чтобы не мусорили в корневой папке фтп, для этого есть собственная папка)
Далее идем в папку с нашей мордой и начинаем править...

1) в файле pfoftpd.conf не указывать параметр ScoreboardFile

2) правим class_system.php

находим строку:

"exec($GLOBALS['config_path_to_proftpd'] . ' -l', $modules);"


изменяем на:

"exec($GLOBALS['config_path_to_proftpd'] . ' -vv', $modules);"


3) правим configure_extensions.php

находим строку:

"if ($system->get_have_ftpmodule('mod_quotatab.c') && $system->get_have_ftpmodule('mod_quotatab_sql.c')) {"


правим на:

"if ($system->get_have_ftpmodule('mod_quotatab/цифры_версии_модуля') && $system->get_have_ftpmodule('mod_quotatab_sql.c')) {"


Не забываем править при необходимости строку в пункте 3 после обновлений модуля.

#) Для желающих вообще забыть про правку, проверку можно отключить вообще, делается следующим образом:

правим configure_extensions.php

находим следующие строки:

$have_table = $db->get_table_exists('ftpquotalimits') && $db->get_table_exists('ftpquotatallies'); 
$have_modules = false;
$have_section = true;
if (sys_statusavailable() != 0) {


правим на:

$have_table = $db->get_table_exists('ftpquotalimits') && $db->get_table_exists('ftpquotatallies');
$have_modules = true;
$have_section = true;
if (sys_statusavailable() != 0) {


Не корректно с точки зрения правильности, если забудете собрать с модулями квот "mod_quotatab"+"mod_quotatab_sql", работать не будет, поэтому лучше использовать более корректный вариант прикручивания с проверками наличия нужных модулей.

Для автоматического создания и удаления папочек и присваивания прав доступа, проверяем наличие утилиты "sudo" в файле конфигурации которой (sudoers) необходимо прописать :

Cmnd_Alias CREATE_USER = /путь_к_директории/proftpd_admin/misc/user_script/create_user.sh 
Cmnd_Alias DELETE_USER = /путь_к_директории/proftpd_admin/misc/user_script/delete_user.sh


www ALL=(ALL) NOPASSWD: CREATE_USER
www ALL=(ALL) NOPASSWD: DELETE_USER


Не забывает выставить права на оба скрипта >>> root:wheel 770

В файл create_user.sh (proftpd_admin/misc/user_script/create_user.sh) дописываем следующее (права в данном случае позволяют другим пользователям читать содержимое папки):

mkdir -p /путь_к_корневой_ftp_папке/$USER 
chown $USER_ID:$GROUP_ID /путь_к_ftp_папке/$USER
chmod 755 /путь_к_корневой_ftp_папке/$USER


В файл delete_user.sh (proftpd_admin/misc/user_script/delete_user.sh) дописываем следующее:

rm -fr /путь_к_корневой_ftp_папке/$USER


Для новичков: когда будете использовать квотирование (выставлять, менять установленное как общее, так и для конкретного пользователя) не забываем всегда тыкать по точкам с выбором жесткости квотирования, метода квотирования и т.д. иначе может выбить квоту вообще (морда всегда проводит проверку для защиты от неопытного пользователя).

Proftpd admin скачать бесплатно, без регистрации, без смс :)
  • 28 февраля 2012, 08:18
  • leonard
  • просмотров: ~4457
  • рейтинг: ?

Комментарии (9)

Вы - anonymous, войти ?

можно использовать bbcode-теги
[b]жирный текст[/b]
[i]курсив[/i]
[u]underline[/u]
[s]зачеркнутый текст[/s]
[size=20px]размер шрифта[/size]
всякие изменения текста
[left][/left]
[right][/right]
[center][/center]
позиционирование элементов: картинки, текст и т.д
[url][/url]
[email][/email]
внутри тега [url] помещайте ссылки, а внутри [email] адрес электронной почты;
так же [url] можно использовать в виде:
[url=http://example.com]пример[/url],
[url=http://test.ru][img]http://flickr.com/givemeimg.png[/img][/url]
[code][/code]
[quote][/quote]
внутри тега [code] можно помещать программный код (подстветка попытается включиться автоматически); для выделения цитат используйте [quote]
также можно напрямую указать язык [code=cpp]int i;[/code]
[list][/list]
создаем списки, каждый элемент пишется после [*].

Можно указывать маркер - [list=marker].
возможные маркеры 1(decimal), i(lower-roman), I(upper-roman), a(lower-alpha), A(upper-alpha). Примеры:

[list][*]1 элемент[*]2 элемент[*]3 элемент[/list]
[list=1][*]1 элемент[*]2 элемент[*]3 элемент[/list]
[list=A][*]1 элемент[*]2 элемент[*]3 элемент[/list]
[table][/table]
оформляем таблицу, используя внутренние теги [tr] и [td].
[tr] - строка, [td] - поле в строке,
[table=100%] - можно задавать ширину в процентах, по-умолчанию ширина 100%
[td=2] - можно задавать сколько столбцов входит в это поле. Пример:

[table=50%][tr][td]столбец 1[/td][td]столбец 2[/td][/tr][tr][td]значение 1[/td][td]значение 2[/td][/tr][tr][td=2]сразу 2 столбца[/td][/tr][/table]
[img][/img]
тег для вставки фото или картинок, мы любим картинки. Примеры использования:

[img]http://ya.ru/logo.png[/img],
[img=100x100px]http://ya.ru/logo.png[/img]
[img=fullimg.url]thumbimg.url[/img],
Пожалуйста загружайте картинки на наш сайт, либо вставляйте с бекбоновских ресурсов.
[video][/video]
Проигрывает видео, внутрь вставляем ссылки на видео, поддерживается Play.Ykt.Ru(нужно вставить ссылку на страницу с видео) и tv.ykt.ru(нужно вставить ссылку на адрес файла)