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>