proftpd проблемы и настройка
Добавлено: 2017-05-25 10:50:53
Добрый день.
Прошу помочь разобраться почему не работает как задумывалось.
Т.е. не получается расставить права пользователям и группам на определенные каталоги в домашнем каталоге, который один на всех.
Стандартная часть конфига.
Глобал часть.
И часть включения sftp и tls
Если указать <Directory ~/qw> или <Directory ~/qw/> то папку не видно
А при указанном выше в qw никто записать ничего не может.
Даже те кому разрешена запись в корень.
Если удалить <Directory ~/qw/*> то кому разрешена запись везде могут сохранять.
Т.е. цель запретить всем кроме разрешенных запись в корень, а на определенных папках разрешена запись определенным группам, а всем остальным пользователям только чтение всего.
Так же не могу понять почему в тотале показывается .htaccess, хотя фильтр PathDenyFilter "(\\.Ftpaccess | \\.htaccess)$" есть.
Прошу помочь разобраться почему не работает как задумывалось.
Т.е. не получается расставить права пользователям и группам на определенные каталоги в домашнем каталоге, который один на всех.
Стандартная часть конфига.
Код: Выделить всё
#
# For more information about Proftpd configuration
# see http://www.proftpd.org/
#
# This is a basic ProFTPD configuration file (rename it to
# 'proftpd.conf' for actual use. It establishes a single server
# and a single anonymous login. It assumes that you have a user/group
# "nobody" and "ftp" for normal operation and anon.
######### Подгружаем модули недостающие
LoadModule mod_tls.c
LoadModule mod_sftp.c
LoadModule mod_sql.c
LoadModule mod_sql_mysql.c
# имя сервера - показывается коннектящимся клиентам
ServerName "Maine FTP Servant :)))"
# тип сервера (даже не тип самого сервера, а тип его запуска,
# standalone/inetd - сам или через inetd)
ServerType standalone
# смысл следующей директивы такой: если клиент коннектится не на имя
# а на IP или на виртуальный хост, не описанный в конфиге, то при
# установке в `off` он получит отлуп, если же установлено `on` то
# он будет обслужен `сервером по-умолчанию`
DefaultServer on
# e-mail администратора (по идее для каждого ВиртуалХоста его можно
# поставить разный - но я делаю один сервер без извращений с
# виртуальными хостами)
ServerAdmin mail@mail.ru
# Сообщать свою версию сервера или нет
#ServerIdent off
# файло где хранится инфа о сессиях
ScoreboardFile /var/run/proftpd/proftpd.scoreboard
# порт на котором работает сервер
Port 0
# если вылезет проблема, типа тормозов при подключении
# (в момент установления коннекта `задумывается` на 10-20 секунд)
# то раскомментируйте следующие две строки
UseReverseDNS off
IdentLookups off
# Use IPv6 support by default.
# UseIPv6 off
# Маска с которой создаются новые файлы (не совсем маска - маска получается
# из этого значения, путём его вычитания из 777 - т.е. в даном случае получится
# маска 755)
Umask 022
# Максимальное число `детей` (работает только в standalohe режиме)
# необходимо для защиты от атак типа `отказ в обслуживании` да и
# от перегрузки сервера поможет :)
MaxInstances 30
CommandBufferSize 512
# Юзер от которого работает сервер
User nobody
# группа, под которой работает сервер
Group nogroup
# Автоматическое удаление недогруженного файла.
#DeleteAbortedStores on
# Включаем поддержку докачки и дозагрузки файлов
AllowRetrieveRestart on
AllowStoreRestart on
# Включаем использование sendfile() функциональности, что снижает затраты на ресурсы,
# но его включение нарушает отображение статистики в таких утилитах как ftptop и ftpwho
#UseSendfile yes
# Задаем временную зону, соответствующую настройкам сервера
TimesGMT off
SetEnv TZ :/etc/localtime
# Включаем поддержку более безопасной загрузки файлов. Вначале файл загружается с именем .in.filename.ext
# И только после успешной и полной загрузки он переименовывается в filename.ext. Позволяет избежать проблем
# частичной загрузки файлов, а так же случаев, когда частично загруженный файл начинает использоваться системой
HiddenStores on
tcpBackLog 5
#где находятся логи
Include etc/proftpd/conf/proftpd_log.conf
<IfModule mod_ctrls.c>
ControlsEngine on
ControlsACLs all allow user root
ControlsMaxClients 2
ControlsLog /var/log/proftpd/proftpd_controls.log
ControlsInterval 5
ControlsSocketOwner root wheel
ControlsSocketACL allow user root
</IfModule>
Код: Выделить всё
<Global>
<IfModule mod_cap.c>
# Allow root to use chown(2)
CapabilitiesEngine off
CapabilitiesSet -CAP_CHOWN
</IfModule>
#########################################################################
# #
# На FreeBSD 11.0 установлена локаль UTF-8, при доступе к файлу, #
# которые именован русскими буквами произошла ошибка. #
# #
#########################################################################
<IfModule mod_lang.c>
LangEngine on
UseEncoding utf8 utf8
</IfModule>
################# Регистрация в SQL ####################################
Include etc/proftpd/conf/proftpd_sql.conf
################## Конец регистрации в SQL #############################
#AllowFilter ^[-A-Za-z0-9_\.(),/]*$ # на всякий случай ;)
PathDenyFilter "(\\.Ftpaccess | \\.htaccess)$"
#PathDenyFilter "(^\.ftpaccess$)" # чтобы не порождать иллюзий
DenyFilter \*.*/
#######################################################################
# описание директивы на смену прав файлов
#по умолчанию запрещено всем менять права на файлы
<Limit SITE_CHMOD>
DenyAll
</Limit>
######################################################################
# если надо чтобы ВСЕ пользователи по ftp были ограниченны
# своей домашней директорией, то надо раскомментировать
# следующую строку:
#DefaultRoot ~
# у меня хитрее сделано - себе я разрешил шариться по всему серверу
# а остальных за`chroot`ил. Если, например, надо чтобы пользователи
# могли по серверу шариться а анонимоусы нет, то надо указать !users
# также можно указать определённую группу.
DefaultRoot ~ !admin
# Разрешаем перезаписывать файлы
AllowOverwrite on
# Директории
<Directory ~>
<Limit Write>
DenyAll
AllowUser admin, petya
</Limit>
<Limit READ>
AllowAll
</Limit>
<Limit DELE>
DenyAll
AllowUser admin, petya
</Limit>
</Directory>
<Directory ~/qw/*>
<Limit READ>
AllowAll
</Limit>
<Limit Write STOR>
AllowGroup proftpd
DenyAll
</Limit>
</Directory>
</Global>
Код: Выделить всё
<VirtualHost 192.168.01.01>
# MasqueradeAddress myhost.mydomain.com
#########################################################################
# Включаем SFTP
Include /usr/local/etc/proftpd/conf/proftpd_sftp.conf
#########################################################################
</VirtualHost>
<VirtualHost 192.168.01.01>
#########################################################################
# Включаем шифрование TLS/SSL
Include /usr/local/etc/proftpd/conf/proftpd_tls_ssl.conf
#########################################################################
</VirtualHost>
А при указанном выше в qw никто записать ничего не может.
Даже те кому разрешена запись в корень.
Если удалить <Directory ~/qw/*> то кому разрешена запись везде могут сохранять.
Т.е. цель запретить всем кроме разрешенных запись в корень, а на определенных папках разрешена запись определенным группам, а всем остальным пользователям только чтение всего.
Так же не могу понять почему в тотале показывается .htaccess, хотя фильтр PathDenyFilter "(\\.Ftpaccess | \\.htaccess)$" есть.