Настраивал 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 off
TimeoutLogin 120
TimeoutIdle 600
TimeoutNoTransfer 900
TimeoutStalled 3600
Port 21
Umask 022
MaxInstances 100
User nobody
Group nogroup
AllowOverwrite on
<Limit SITE_CHMOD>
DenyAll
</Limit>
RootLogin off
RequireValidShell off
TransferLog /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}" ftpquotatallies
QuotaLimitTable 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 30
UserAlias anonymous ftp
MaxClients 40
DisplayLogin welcome.msg
DisplayFirstChdir .message
AuthAliasOnly on
<Limit LOGIN>
AllowAll
</Limit>
<Limit WRITE>
DenyAll
</Limit>
<Directory "/ftp/users">
TransferRate RETR 32
</Directory>
</Anonymous>
</VirtualHost>