proftpd+mysql+quota debian 5 lenny (неработает квота)

Обсуждение настройки и работы сервисов, резервирования, сетевых настроек и вопросов безопасности ОС.

Модераторы: SLEDopit, Модераторы разделов

Аватара пользователя
VIRUS_T
Сообщения: 84

proftpd+mysql+quota debian 5 lenny

Сообщение VIRUS_T »

Здравствуйте, настроил вышеописанную связку неработает квота
конфиги
proftpd.conf

Код: Выделить всё

#
# /etc/proftpd/proftpd.conf -- This is a basic ProFTPD configuration file.
# To really apply changes reload proftpd after modifications.
#
# Includes DSO modules
Include /etc/proftpd/modules.conf
# Set off to disable IPv6 support which is annoying on IPv4 only boxes.
UseIPv6                off
# If set on you can experience a longer connection delay in many cases.
IdentLookups            off
ServerName            "Debian"
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            \*.*/
# Use this to jail all users in their homes
 DefaultRoot            ~
# Users require a valid shell listed in /etc/shells to login.
# Use this directive to release that constrain.
# RequireValidShell        off
# Port 21 is the standard FTP port.
Port                21
# In some cases you have to specify passive ports range to by-pass
# firewall limitations. Ephemeral ports can be used for that, but
# feel free to use a more narrow range.
# PassivePorts                  49152 65534
# If your host was NATted, this option is useful in order to
# allow passive tranfers to work. You have to use your public
# address and opening the passive ports used on your firewall as well.
# MasqueradeAddress        1.2.3.4
# This is useful for masquerading address with dynamic IPs:
# refresh any configured MasqueradeAddress directives every 8 hours
<IfModule mod_dynmasq.c>
# DynMasqRefresh 28800
</IfModule>
# To prevent DoS attacks, set the maximum number of child processes
# to 30.  If you need to allow more than 30 concurrent connections
# at once, simply increase this value.  Note that this ONLY works
# in standalone mode, in inetd mode you should use an inetd server
# that allows you to limit maximum number of processes per service
# (such as xinetd)
MaxInstances            30
# Set the user and group that the server normally runs at.
User                proftpd
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
# Normally, we want files to be overwriteable.
AllowOverwrite            on
# Uncomment this if you are using NIS or LDAP via NSS to retrieve passwords:
# PersistentPasswd        off
# This is required to use both PAM-based authentication and local passwords
# AuthOrder            mod_auth_pam.c* mod_auth_unix.c
# Be warned: use of this directive impacts CPU average load!
# Uncomment this if you like to see progress and transfer rate with ftpwho
# in downloads. That is not needed for uploads rates.
#
# UseSendFile            off
TransferLog /var/log/proftpd/xferlog
SystemLog   /var/log/proftpd/proftpd.log
#<IfModule mod_quotatab.c>
#QuotaEngine off
#</IfModule>
<IfModule mod_ratio.c>
Ratios off
</IfModule>
# Delay engine reduces impact of the so-called Timing Attack described in
# http://security.lss.hr/index.php?page=details&ID=LSS-2004-10-02
# It is on by default.
<IfModule mod_delay.c>
DelayEngine on
</IfModule>
<IfModule mod_ctrls.c>
ControlsEngine        off
ControlsMaxClients    2
ControlsLog           /var/log/proftpd/controls.log
ControlsInterval      5
ControlsSocket        /var/run/proftpd/proftpd.sock
</IfModule>
<IfModule mod_ctrls_admin.c>
AdminControlsEngine off
</IfModule>
#
# Alternative authentication frameworks
#
#Include /etc/proftpd/ldap.conf
Include /etc/proftpd/sql.conf
#
# This is used for FTPS connections
#
#Include /etc/proftpd/tls.conf
# A basic anonymous configuration, no upload directories.
# <Anonymous ~ftp>
#   User                ftp
#   Group                nogroup
#   # We want clients to be able to login with "anonymous" as well as "ftp"
#   UserAlias            anonymous ftp
#   # Cosmetic changes, all files belongs to ftp user
#   DirFakeUser    on ftp
#   DirFakeGroup on ftp
#
#   RequireValidShell        off
#
#   # Limit the maximum number of anonymous logins
#   MaxClients            10
#
#   # We want 'welcome.msg' displayed at login, and '.message' displayed
#   # in each newly chdired directory.
#   DisplayLogin            welcome.msg
#   DisplayChdir        .message
#
#   # Limit WRITE everywhere in the anonymous chroot
#   <Directory *>
#     <Limit WRITE>
#       DenyAll
#     </Limit>
#   </Directory>
#
#   # Uncomment this if you're brave.
#   # <Directory incoming>
#   #   # Umask 022 is a good standard umask to prevent new files and dirs
#   #   # (second parm) from being group and world writable.
#   #   Umask                022  022
#   #            <Limit READ WRITE>
#   #            DenyAll
#   #            </Limit>
#   #            <Limit STOR>
#   #            AllowAll
#   #            </Limit>
#   # </Directory>
#
# </Anonymous>

sql.conf

Код: Выделить всё

#
# Proftpd sample configuration for SQL-based authentication.
#
# (This is not to be used if you prefer a PAM-based SQL authentication)
#
<IfModule mod_sql.c>
SQLBackend mysql
# The passwords in MySQL are encrypted using CRYPT
SQLAuthTypes Plaintext Crypt
SQLAuthenticate users groups
# used to connect to the database
# databasename@host database_user user_password
SQLConnectInfo ftp@localhost proftpd password
# Here we tell ProFTPd the names of the database columns in the "usertable"
# we want it to interact with. Match the names with those in the db
SQLUserInfo ftpuser userid passwd uid gid homedir shell
# Here we tell ProFTPd the names of the database columns in the "grouptable"
# we want it to interact with. Again the names match with those in the db
SQLGroupInfo ftpgroup groupname gid members
# set min UID and GID - otherwise these are 999 each
SQLMinID 500
# create a user's home directory on demand if it doesn't exist
CreateHome on
# Update count every time user logs in
SQLLog PASS updatecount
#
#SQLNamedQuery updatecount UPDATE "count=count+1, accessed=now() WHERE userid='%u'" ftpuser
SQLNamedQuery count UPDATE "count=1 WHERE username='%u'" proftpd
# Update modified everytime user uploads or deletes a file
SQLLog STOR,DELE modified
SQLNamedQuery modified UPDATE "modified=now() WHERE userid='%u'" ftpuser
</IfModule>
<IfModule mod_quota.c>
# User quotas
# ===========
QuotaEngine on
QuotaDirectoryTally on
QuotaDisplayUnits Mb
QuotaShowQuotas on
SQLNamedQuery get-quota-limit SELECT "name, quota_type, per_session, limit_type,
bytes_in_avail, bytes_out_avail, bytes_xfer_avail, files_in_avail,
files_out_avail, files_xfer_avail FROM ftpquotalimits WHERE name = '%{0}' AND
quota_type = '%{1}'"
SQLNamedQuery get-quota-tally SELECT "name, quota_type, bytes_in_used,
bytes_out_used, bytes_xfer_used, files_in_used, files_out_used, files_xfer_used
FROM ftpquotatallies WHERE name = '%{0}' AND quota_type = '%{1}'"
SQLNamedQuery update-quota-tally UPDATE "bytes_in_used = bytes_in_used + %{0},
bytes_out_used = bytes_out_used + %{1}, bytes_xfer_used = bytes_xfer_used + %{2},
files_in_used = files_in_used + %{3}, files_out_used = files_out_used + %{4},
files_xfer_used = files_xfer_used + %{5} WHERE name = '%{6}' AND quota_type =
'%{7}'" ftpquotatallies
SQLNamedQuery insert-quota-tally INSERT "%{0}, %{1}, %{2}, %{3}, %{4}, %{5},
%{6}, %{7}" ftpquotatallies
QuotaLimitTable sql:/get-quota-limit
QuotaTallyTable sql:/get-quota-tally/update-quota-tally/insert-quota-tally
RootLogin off
RequireValidShell off
</IfModule>


modules.conf

Код: Выделить всё

#
# Install proftpd-mod-mysql to use this
LoadModule mod_sql_mysql.c
# Install proftpd-mod-pgsql to use this
#LoadModule mod_sql_postgres.c
LoadModule mod_radius.c
LoadModule mod_quotatab.c
LoadModule mod_quotatab_file.c
# Install proftpd-mod-ldap to use this
#LoadModule mod_quotatab_ldap.c
# Install proftpd-mod-pgsql or proftpd-mod-mysql to use this
LoadModule mod_quotatab_sql.c
LoadModule mod_quotatab_radius.c
LoadModule mod_wrap.c
LoadModule mod_rewrite.c
LoadModule mod_load.c
LoadModule mod_ban.c
LoadModule mod_wrap2.c
LoadModule mod_wrap2_file.c
# Install proftpd-mod-pgsql or proftpd-mod-mysql to use this
LoadModule mod_wrap2_sql.c
LoadModule mod_dynmasq.c
# keep this module the last one
LoadModule mod_ifsession.c


Дамп бд

Код: Выделить всё

--
-- Структура таблицы `ftpgroup`
--

DROP TABLE IF EXISTS `ftpgroup`;
CREATE TABLE IF NOT EXISTS `ftpgroup` (
  `groupname` varchar(16) NOT NULL default '',
  `gid` smallint(6) NOT NULL default '5500',
  `members` varchar(16) NOT NULL default '',
  KEY `groupname` (`groupname`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COMMENT='ProFTP group table';

--
-- Дамп данных таблицы `ftpgroup`
--

INSERT INTO `ftpgroup` (`groupname`, `gid`, `members`) VALUES
('ftpgroup', 2001, 'ftpuser');

-- --------------------------------------------------------

--
-- Структура таблицы `ftpquotalimits`
--

DROP TABLE IF EXISTS `ftpquotalimits`;
CREATE TABLE IF NOT EXISTS `ftpquotalimits` (
  `name` varchar(30) default NULL,
  `quota_type` enum('user','group','class','all') NOT NULL default 'user',
  `per_session` enum('false','true') NOT NULL default 'false',
  `limit_type` enum('soft','hard') NOT NULL default 'soft',
  `bytes_in_avail` int(10) unsigned NOT NULL default '0',
  `bytes_out_avail` int(10) unsigned NOT NULL default '0',
  `bytes_xfer_avail` int(10) unsigned NOT NULL default '0',
  `files_in_avail` int(10) unsigned NOT NULL default '0',
  `files_out_avail` int(10) unsigned NOT NULL default '0',
  `files_xfer_avail` int(10) unsigned NOT NULL default '0'
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

--
-- Дамп данных таблицы `ftpquotalimits`
--

INSERT INTO `ftpquotalimits` (`name`, `quota_type`, `per_session`, `limit_type`, `bytes_in_avail`, `bytes_out_avail`, `bytes_xfer_avail`, `files_in_avail`, `files_out_avail`, `files_xfer_avail`) VALUES
('exampleuser2', 'user', 'false', 'hard', 728640, 0, 0, 0, 0, 0),
('exampleuser', 'user', 'false', 'hard', 5728640, 0, 0, 0, 0, 0);

-- --------------------------------------------------------

--
-- Структура таблицы `ftpquotatallies`
--

DROP TABLE IF EXISTS `ftpquotatallies`;
CREATE TABLE IF NOT EXISTS `ftpquotatallies` (
  `name` varchar(30) NOT NULL default '',
  `quota_type` enum('user','group','class','all') NOT NULL default 'user',
  `bytes_in_used` int(10) unsigned NOT NULL default '0',
  `bytes_out_used` int(10) unsigned NOT NULL default '0',
  `bytes_xfer_used` int(10) unsigned NOT NULL default '0',
  `files_in_used` int(10) unsigned NOT NULL default '0',
  `files_out_used` int(10) unsigned NOT NULL default '0',
  `files_xfer_used` int(10) unsigned NOT NULL default '0'
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

--
-- Дамп данных таблицы `ftpquotatallies`
--


-- --------------------------------------------------------

--
-- Структура таблицы `ftpuser`
--

DROP TABLE IF EXISTS `ftpuser`;
CREATE TABLE IF NOT EXISTS `ftpuser` (
  `id` int(10) unsigned NOT NULL auto_increment,
  `userid` varchar(32) NOT NULL default '',
  `passwd` varchar(32) NOT NULL default '',
  `uid` smallint(6) NOT NULL default '5500',
  `gid` smallint(6) NOT NULL default '5500',
  `homedir` varchar(255) NOT NULL default '',
  `shell` varchar(32) NOT NULL default '/sbin/nologin',
  `count` int(11) NOT NULL default '0',
  `accessed` datetime NOT NULL default '0000-00-00 00:00:00',
  `modified` datetime NOT NULL default '0000-00-00 00:00:00',
  PRIMARY KEY  (`id`),
  UNIQUE KEY `userid` (`userid`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 COMMENT='ProFTP user table' AUTO_INCREMENT=3;

--
-- Дамп данных таблицы `ftpuser`
--

INSERT INTO `ftpuser` (`id`, `userid`, `passwd`, `uid`, `gid`, `homedir`, `shell`, `count`, `accessed`, `modified`) VALUES
(1, 'exampleuser', 'secret', 2001, 2001, '/home/www.example.com', '/sbin/nologin', 0, '0000-00-00 00:00:00', '2037-10-25 17:19:48'),
(2, 'exampleuser2', 'secret2', 2001, 2001, '/home/www.example2.com', '/sbin/nologin', 0, '0000-00-00 00:00:00', '2037-10-25 17:38:08');


В чем может быть проблема?
Заранее спасибо!!!

да, при коннекте

Код: Выделить всё

331 Password required for exampleuser
Пароль:
230 User exampleuser logged in
ftp>  quote site quota
202 No quotas in effect
ftp>
МУСИ ПУСИ OPENSUSE
Спасибо сказали:
Аватара пользователя
KiWi
Бывший модератор
Сообщения: 2521
Статус: статус, статус, статус

Re: proftpd+mysql+quota debian 5 lenny

Сообщение KiWi »

Не хочу вас огорчать, но "No quotas in effect" означает, что нет никаких квот, что, судя по дампу БД, правда.
Спасибо сказали:
Аватара пользователя
VIRUS_T
Сообщения: 84

Re: proftpd+mysql+quota debian 5 lenny

Сообщение VIRUS_T »

KiWi писал(а):
25.10.2010 20:23
Не хочу вас огорчать, но "No quotas in effect" означает, что нет никаких квот, что, судя по дампу БД, правда.

Я б с радостью огорчился)), дамп просто не полностью выложил, (вот дамп перевыложил)все там есть(Более того на фрибсд тожесамое прекраснго работает, только там при сборке из портов можно mod_quota выбрать) , я в дебиане ставил через apt-get ничего не спрашивало, по сему предположу, можт собрался без поддержки mod_quota? Как ее активировать?
МУСИ ПУСИ OPENSUSE
Спасибо сказали:
neol
Сообщения: 600
ОС: Debian Stable

Re: proftpd+mysql+quota debian 5 lenny

Сообщение neol »

Может переносы в SQL запросах заэскейпить?
Еще можно посмотреть логи proftpd и включить mysql query_log, если есть возможность.

VIRUS_T писал(а):
26.10.2010 09:01
я в дебиане ставил через apt-get ничего не спрашивало, по сему предположу, можт собрался без поддержки mod_quota?

В stable mod_quotatab точно включен.
$ apt-file search mod_quota
proftpd-basic: /usr/lib/proftpd/mod_quotatab.so
proftpd-basic: /usr/lib/proftpd/mod_quotatab_file.so
proftpd-basic: /usr/lib/proftpd/mod_quotatab_radius.so
proftpd-basic: /usr/lib/proftpd/mod_quotatab_sql.so

И разработчики Debian рекомендуют использовать aptitude вместо apt-get
Спасибо сказали:
Аватара пользователя
VIRUS_T
Сообщения: 84

Re: proftpd+mysql+quota debian 5 lenny

Сообщение VIRUS_T »

neol писал(а):
26.10.2010 09:47
Может переносы в SQL запросах заэскейпить?
Еще можно посмотреть логи proftpd и включить mysql query_log, если есть возможность.

VIRUS_T писал(а):
26.10.2010 09:01
я в дебиане ставил через apt-get ничего не спрашивало, по сему предположу, можт собрался без поддержки mod_quota?

В stable mod_quotatab точно включен.
$ apt-file search mod_quota
proftpd-basic: /usr/lib/proftpd/mod_quotatab.so
proftpd-basic: /usr/lib/proftpd/mod_quotatab_file.so
proftpd-basic: /usr/lib/proftpd/mod_quotatab_radius.so
proftpd-basic: /usr/lib/proftpd/mod_quotatab_sql.so

И разработчики Debian рекомендуют использовать aptitude вместо apt-get

моды все наместе

глупый вопрос как лог mysql_query_log включить? в какой секции конфигов прописать?
МУСИ ПУСИ OPENSUSE
Спасибо сказали:
neol
Сообщения: 600
ОС: Debian Stable

Re: proftpd+mysql+quota debian 5 lenny

Сообщение neol »

VIRUS_T писал(а):
26.10.2010 17:11
глупый вопрос как лог mysql_query_log включить? в какой секции конфигов прописать?

Код: Выделить всё

[mysqld]
log = /path/to/query.log
Спасибо сказали: