Я думаю, каждый понимает необходимость ftp-сервера. И меня не миновало. Свой выбор я остановил на vsftpd.
Основные возможности:
- Виртуальные ip.
- Виртуальные пользователи.
- работает как через [x]inetd так и отдельно.
- мощная система настройки для каждого(!) пользователя.
- увеличение полосы пропускания.
- настройка для каждого ip.
- лимиты для каждого ip.
- поддержка протокола IPv6
На данный момент vsftpd используется на большинстве серверов под управлением linux. Среди них ftp.redhat.com, ftp.suse.com, ftp.debian.org, ftp.gnu.org, ftp.gnome.org, ftp.kde.org. Думаю, тут комментарии излишни.
Я ставил vsftpd из пакета, собирать из исходных текстов было лень, но сложностей там не должно быть.
# apt-get install vsftpd
Если вы собираете vsftpd самостоятельно, перед установкой надо выполнить несколько обязательных действий.
Для конфигурации по умолчанию:
# useradd nobody # mkdir /usr/share/empty # mkdir /var/ftp # useradd -d /var/ftp ftp # chown root.root /var/ftp # chmod og-w /var/ftp</pre>
Далее обычно создаются /var/ftp/pub и /var/ftp/icoming
# mkdir /var/ftp/pub # chmod 2775 /var/ftp/pub # chown root.psycho /var/ftp/pub
Объясню последнюю строчку. Владельцем каталога является root, а группа к которой принадлежит каталог /var/ftp/pub это psycho, т.е. моя группа. Это сделано для того, чтобы я под своим пользователем мог менять содержимое. Ибо делать это из-под root – плохой признак.
Каталог под upload
# mkdir /var/ftp/incoming # chmod 3773 /var/ftp/incoming # chown psycho.psycho /var/ftp/incoming
Ну, с владельцами, я думаю, все ясно, а права я выставил чтоб анонимные пользователи могли писать но не могли просматривать содержимое.
После выполнения этих действий можно начинать инсталляцию.
Если вы используете стандартный «inetd» вам надо отредактировать /etc/inetd.conf и добавить такую строку
ftp stream tcp nowait root /usr/sbin/tcpd /usr/local/sbin/vsftpd
Если у вас не установлены tcp_wrappers и вы не собираетесь их использовать то уберите из строчки /usr/sbin/tcpd
Ну и соответственно перезапустите inetd.
Если вы используете не inetd, а xinetd то в каталоге ../vsftpd/EXAMPLE/INTERNET_SITE/ лежит пример файла конфигурации.
Если у вас на машине запущен PAM то вам необходимо создать файл /etc/pam.d/ftp Пример можно взять в ../vsftpd/RedHat/vsftpd.pam Если вы этого не сделаете то локальные юзеры не смогут залогиниться.
Настройка vsftpd.conf
Пример файла конфигурации с комментариями
# Примерный конфиг /etc/vsftpd.conf # # # разрешить вход дядюшке anonymous'у? anonymous_enable=YES #Не запускать через inetd #listen=YES # разрешать вход локальным пользователям. local_enable=YES # # Разрешить любую форму команды записи FTP. write_enable=YES # # umask по умолчанию для локальных юзеров 077. Возможно хочется # изменить на 022, (022 используется в большинстве ftpd's) #local_umask=022 # # Разрешить аплоад для анонимусов. # Имеет смысл когда разрешена запись (write_enable=YES) # кроме того каталог должен быть доступен для записи FTP юзером. anon_upload_enable=NO # # Разрешить анонимусу создавать каталоги #anon_mkdir_write_enable=YES # # Разрешить мессаги каталогов - сообщения которые выдаются при # входе в определенную директорию. dirmessage_enable=YES # # логить аплоад/даунлоад xferlog_enable=YES # # убедиться что PORT коннекты вылазят из порта 20 (ftp-data). connect_from_port_20=YES # # Можно изменять автоматически владельца на аплоадных файлах # естественно использовать тут root'а я не советую chown_uploads=YES chown_username=psycho # # в какой файл пишем логи xferlog_file=/var/log/vsftpd.log # # можно увидеть лог и в формате xferlog #xferlog_std_format=YES # # таймаут на открытую && неиспользующуюся сессию. idle_session_timeout=600 # # таймаут на коннект по порту data. #data_connection_timeout=120 # # рекомендуется создать в системе пользователя, которого # ftp сервер будет использовать как конкретно униженного в своих # правах юзверя. #nopriv_user=ftpsecure # # Это для распознования асинхронных ABOR запросов. # не рекомендуется по соображениям безопасности (этот код довольно # сложный (и проверять его разработчикам видимо влом Demige)). # А если его не включить то возможно старые FTP клиенты вас не поймут. #async_abor_enable=YES # # По-умолчанию сервер будет разрешать ASCII режим, но фактически # игнорировать реквест. Здесь можно разрешить использовать ASCII. # Есть ппасность при вкл. ascii_download_enable что некоторые нехорошие # юзеры будут тормозить вашу машину командой "SIZE /большой/файл" в # ASCII режиме. # Эти ASCII опции разбиты на аплоад и даунлоад т.к. вы можете возжелать # разрешить ASCII-аплоады (для работы аплоад скриптов), без # разрешения даунлоада из-за DoS риска по командам SIZE и ASCII. # Поддержка ASCII на стороне клиента должна быть. #ascii_upload_enable=YES#ascii_download_enable=YES # # Баннер при входе ftpd_banner=Welcome to Psycho FTP. # # файл неразрешенных email адресов. # юзабельно для защиты от DoS атак. deny_email_enable=YES # (умолчальный файл) banned_email_file=/etc/vsftpd.banned_emails # # можно разрешить некоторым юзерам chroot()ится в их домашний каталог # если chroot_local_user=YES, тогда это будет листинг юзеров, которые # не могут chroot()ится. # если chroot_local_user=NO то в ftp_<!--PHPSECURED-->< # !--PHPSECURED-->chroot_list прописывается какого # виртуального юзера куда chroot`ить chroot_list_enable=YES chroot_list_file=/etc/ftp_<!--PHPSECURED--><!--PHPSECURED-->chroot_list # для локальных юзверей chroot_local_user=YES # можно разрешить опцию "-R" для встроенного ls. # по умолчанию запрещена т.к. сильно загружает систему на больших сайтах # Тем не менее некоторые FTP-клиенты такие как "ncftp" и "mirror" предполагают # ее наличие. Так что лучше ее включить. #ls_recurse_enable=YES
В общем, это мой рабочий конфиг, ничего сложного в настройке нет.
Проверим работоспособность
</pre> <pre># ftp 192.168.5.13 Connected to 192.168.5.13. 220 Welcome to Psycho FTP. Name (192.168.5.13:psycho): 331 Please specify the password. Password: 230 Login successful. Have fun. Remote system type is UNIX. Using binary mode to transfer files. ftp> bye 221 Goodbye.
В ../vsftpd/EXAMPLE лежат разнообразные примеры файла конфигурации уже заточенные под конкретные цели, можно выбрать из готового.
При написании этой статьи использовалось официальное руководство и собственный опыт. Документацию и последнюю версию vsftpd можно найти на http://vsftpd.beasts.org/
Автор: Psycho (http://www.nnlug.h10.ru)
Оригинал: http://www.nnlug.h10.ru/index.php?page=other_page&active_menu=opyt&link=issues/vsftpd.html
Статья взята с сайта OpenNET.
Добавить комментарий