Оригинал статьи http://www.unixlife.net/?p=27
Часто возникает у многих вопрос о настройке фтп сервера на FreeBSD, может быть кому поможет.
Наш фтп сервер мы постоим на базе Proftp с авторизацией при помощи системных пользователей к их рабочим папкам, при помощи логина и пароля без внесения пользователя в систему, а так же авторизация анонимного пользователя. Для наглядности пользователь с аунтификацией взят test и паролем test, анонимные пользователи попадают в папку /mnt/upload/pub, зарегестрированные в сисстеме пользователи попадают в свои домашние рабочие каталоги (обычно это /home/user), наш пользователь test попадает в папку /mnt/upload
1. Устанавливаем Proftpd из портов
make -C /usr/ports/ftp/proftpd install clean2. Редактируем файл /usr/local/etc/proftpd.conf
ServerName "MY FTP"
ServerType standalone
DefaultServer on
MaxInstances 30
Port 21
UseReverseDNS off
IdentLookups off
DefaultRoot ~
ServerIdent off
RequireValidShell off
User nobody
Group nobody
SystemLog /var/log/proftpd/system.log
TransferLog /var/log/proftpd/transfer.log
ExtendedLog /var/log/proftpd/extended.log
ScoreboardFile /var/run/proftpd/proftpd.scoreboard
AuthUserFile /usr/local/etc/ftpd.passwd
AuthGroupFile /usr/local/etc/ftpd.group
DefaultRoot ~
<Directory /mnt/upload>
<Limit STOR APPE WRITE DELE>
AllowUser test
DenyAll
</Limit>
<Limit DELE SITE_CHMOD>
AllowUser test
DenyAll
</Limit>
</Directory>
<Anonymous /mnt/upload/pub>
User anonftp
Group anonftp
UserAlias anonymous anonftp
MaxClients 40 "Sorry, SERVER OVERLOADED."
MaxClientsPerHost 10 "Sorry, maximum connects from ONE HOST."
ShowSymlinks off
<Limit WRITE>
DenyAll
</Limit>
<Limit LOGIN>
Order deny,allow
Allow from all
</Limit>
</Anonymous>3. При помощи скрипта http://www.castaglia.org/proftpd/contrib/ftpasswd создаем наших пользователей в фаиле /usr/local/etc/ftpd.passwd командой:
ftpasswd --file /usr/local/etc/proftpd/ftp.passwd --name test --shell /bin/false --passwd --home /mnt/upload --uid 222 --gid 65534Скрипт попросит вас указать пароль пользователю и подтвердить его. (У нас это test test)
4. Далее в /usr/local/etc/ftpd.group добавим строку test:x:65534:
Фаилы [url=ftp://ftp.passwd]ftp.passwd[/url] и ftpd.group создаем вручную.
5. Пропишем в /etc/shells строку /bin/false
6. Для анонимных пользователей вносим в файл /usr/local/etc/ftpd.passwd строку:
anonftp:*:65534:65534::/mnt/upload:/sbin/nologin7. А так же в usr/local/etc/ftpd.group вносим anonftp:x:65534::x:65534:
8. Добавляем в в /etc/rc.conf строку:
proftpd_enable=YES
9. Пробуем запустить /usr/local/etc/rc.d/proftpd start
10. Если все запустилось без ошибок, то проверяем работу демона sockstat | grep 21 и увидим примерно следующее:
nobody proftpd 18417 0 tcp4 6 *:21 *:*
11. Можем проверять работу фтп сервера любым клиентом.
P.S. Ошибки обычно возникают из за неправильного синтаксиса, проверяйте правильность логина пользователя и путь к его папке. А так же наличие необходимых прав на папку.
P.S.S. Конструктивная критика приветствуется, вместе сумеем довести статью до ума )