Настраивал proftpd+mysql, всё работало нормально. Как ввёл вритхосты, так перестали авторизироваться пользователи, которые находятся в mysql, толкьо реальные, заведённые в системе, могут авторизироваться и анонимусы.
slackware 10.1, proftpd 1.3.0rc2.proftpd.conf:
ServerName "some company FTP Server"
ServerType standalone
DefaultServer on
ServerIdent on "Welcome to the some company FTP server. Please login..."UseReverseDNS off
IdentLookups offTimeoutLogin 120
TimeoutIdle 600
TimeoutNoTransfer 900
TimeoutStalled 3600
Port 21
Umask 022
MaxInstances 100User nobody
Group nogroupAllowOverwrite on
<Limit SITE_CHMOD>
DenyAll
</Limit>
RootLogin off
RequireValidShell offTransferLog /usr/local/proftpd/var/transfer.log
ExtendedLog /usr/local/proftpd/var/access.log WRITE,READ write
ExtendedLog /usr/local/proftpd/var/debug.log ALL###### our FTP server
<VirtualHost 10.0.0.4>
ServerName "DigiLan FTP Server"
ServerIdent on "Welcome to the DigiLan FTP server. Please login..."
MaxClients 30
MaxLoginAttempts 2
DeferWelcome on
DefaultRoot ~# The passwords in MySQL are encrypted using CRYPT
SQLAuthTypes Plaintext Crypt
SQLAuthenticate users* groups*
SQLConnectInfo ftpdb@192.168.100.3 ftpuser ftppass
SQLUserInfo ftpuser userid passwd uid gid homedir shell
SQLGroupInfo ftpgroup groupname gid members
SQLMinID 500
SQLHomedirOnDemand on
SQLLog PASS updatecount
SQLNamedQuery updatecount UPDATE "count=count+1, accessed=now() WHERE userid='%u'" ftpuser
SQLLog STOR,DELE modified
SQLNamedQuery modified UPDATE "modified=now() WHERE userid='%u'" ftpuser# 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}" ftpquotatalliesQuotaLimitTable sql:/get-quota-limit
QuotaTallyTable sql:/get-quota-tally/update-quota-tally/insert-quota-tally<Anonymous ~ftp>
MaxClientsPerHost 3
User ftp
Group ftp
UserAlias anonymous ftp
MaxClients 40
DisplayLogin welcome.msg
DisplayFirstChdir .message
AuthAliasOnly on<Limit WRITE>
DenyAll
</Limit><Directory "/ftp/files/incoming">
<Limit WRITE>
AllowAll
</Limit>
</Directory>
</Anonymous></Virtualhost>
######## Internet server
<VirtualHost 1.2.3.4>
ServerName "some company FTP Server"
ServerIdent on "Welcome to the some company FTP server."
DefaultRoot ~<Limit LOGIN>
DenyAll
</Limit><Anonymous /ftp/users>
MaxClientsPerHost 3
User ftp
Group ftp
HideNoAccess on
MaxClients 30UserAlias anonymous ftp
MaxClients 40
DisplayLogin welcome.msg
DisplayFirstChdir .messageAuthAliasOnly on
<Limit LOGIN>
AllowAll
</Limit><Limit WRITE>
DenyAll
</Limit><Directory "/ftp/users">
TransferRate RETR 32
</Directory></Anonymous>
</VirtualHost>
сорри. нашёл грабли.
в виртхостах не стояло RequireValidShell off
а шеллы кривые все были :)