ProftpdConfig
Краткий пример конфигурации сервера proftpd, запущеного от пользователя root, но в большинстве случаев вполне достаточный. Здесь включены некоторые правила безопастности и удобства отладки. Пользователь test реальный пользователь системы со своим домашним каталогом. Если строку <Anonymous ~test> заменить на <Anonymous /var/ftp>, то для пользователя test зашедшего по ftp это будет домашний каталог.
Для запуска сервера от непривелегированного пользователя требуется отдельное шаманство в роли создания специфичного файла passwd. В этом случае возникают проблемы с назначением для ftp домашнего каталога отличного от указанного в настояшем passwd, т.к. он пытается сделать chroot.
Приведенный конфиг вряд ли работает, так как в общей секции мы видим секцию Limit, а при подобном размещении и таком содержимом она вызывает полную блокировку попыток залогиниться даже не предлагая приглашения(Данное утверждение противоречит официальной документации, однако на практике и в некоторых авторских книгах замечен именно такой порядок работы). Во вторых в секции Anonymous мы видим директиву "AuthUsingAlias on", однако, директивы UserAlias из которой и берутся соответствия ftp и системных логинов, нет.
ServerName "ProFTPD"
ServerType standalone
DefaultServer on
Port 21
Umask 002
MaxInstances 30
User nobody
Group nobody
UseReverseDNS off
AllowStoreRestart on
PersistentPasswd off
RequireValidShell off
AuthPAMAuthoritative off
#LDAPServer localhost
#LDAPDNInfo cn=Manager,dc=example,dc=com password
#LDAPDoAuth on "ou=People,dc=examples,dc=com"
#LDAPNegativeCache on
PidFile /var/run/proftpd/proftpd.pid
ScoreboardFile /var/run/proftpd/proftpd.scoreboard
SystemLog /var/log/proftpd/proftpd.log
#ExtendedLog /var/log/proftpd.log
DenyFilter /\*/\.\.
<Limit LOGIN>
Order allow,deny
DenyAll
</Limit>
<Global>
IdentLookups off
ServerIdent off
RequireValidShell off
AllowOverwrite on
</Global>
<Anonymous ~test>
User test
Group ftp
MaxClients 50
AuthUsingAlias on
AnonRequirePassword on
<Limit WRITE>
AllowAll
</Limit>
<Limit LOGIN>
AllowAll
</Limit>
</Anonymous>