Мы — долго запрягаем, быстро ездим, и сильно тормозим.
www.lissyara.su —> статьи —> FreeBSD —> программы —> vsftpd

Установка и настройка vsftpd

Автор: Andy.


 На работе захотели файловую помойку из под виндов убрать, и перевести на FreeBSD. Для этих целей отыскался старый - престарый компьютер (2xCeleron 300/Abit BP-6/128mb/20Gb). Словом, сгодится.
Решил ftp поднять. Поднимать FTP посредством демона, идущего с операционкой не хотелось, хотелось что-нибудь эдакого.
Поиск по инету, случайно привел на сайт разработчиков vsftpd. Поглядев список серверов, на которых запахивает этот демон, я решил поставить именно его. Оговорюсь сразу, нужен именно файл сервер, где все могут складывать файлы, удалять их, создавать директории и тд.

Итак, сперва, обновим порты:
     
portsnap fetch update

Далее, собираем программу
     
cd /usr/ports/ftp/vsftpd/&& make install clean

Окно выбора опций довольно скромное. Предлагают установить скрипты в rc.d и возможность безопасных соединенией SSL. Так как фтп локальный, наворот в виде SSL просто не нужен. Отмечаем первый пункт.
Собственно, после сборки мы получаем vsftpd, примеры, в которых содержаться некие базовые настройки vsftpd под конкретные задачи. Примеры доступны по адресу /usr/local/share/doc/vsftpd/EXAMPLE, но это не столь важно, ибо присутствует man и пример конфигурационного файла ;). Во FreeBSD, vsftpd, после инсталляцииб кладет конфигурационный файл в /usr/local/etc/vsftpd.conf.
Поскольку создатели озаботились о резервной копии конфигурационного файла, смело приступим к редактированию оригинала.

#возможность работы в автономном режиме
listen=YES
#позволяем анонимных пользователей, учетки anonymous и ftp являются синонимами
anonymous_enable=YES
#разрешаем локальных пользователей (локальные пользователи - это те, которые
#зарегестрированы в системе, то есть на них есть учетные записи)
local_enable=YES
#разрешаем любые формы записи на FTP сервер
write_enable=YES
#разрешаем анонимным пользователям upload
anon_upload_enable=YES
#разрешаем анонимным пользователям создавать директории
anon_mkdir_write_enable=YES
#разрешаем анонимным пользователям переименовывать файлы
anon_other_write_enable=YES
#у анонимов пароль спрашивать не будем
no_anon_password=YES
#директория нашей помойки (если пользователь присутствует) 
anon_root=/home/ftp/
#разрешаем соединение по 20 порту
connect_from_port_20=YES
#поддержка древних FTP клиентов
async_abor_enable=YES
#используем родное время, а не GMT
use_localtime=YES
#небольшое приветствие
ftpd_banner=Hello! We come in peace!
#возможность работы как фоновый процесс
background=YES

 
Честно говоря, у меня не получилось под анонимным пользователем заливать файлы (вроде бы аноним, завязан с виртуальными пользователями, может, если их создать, то аноним будет работать). Прогуглив вопрос, и поглядев информацию на эту тему, стало ясно, что не у одного меня, похожие грабли. В документации на ALT Linux советовали создавать пользователя vsftp с шеллом /sbin/nologin (это у нас, у них он другой, какой не помню уже ;) ). Поэтому действуем так, создаем пользователя (имя любое) lissyara. Шелл, естественно nologin, пароль lissyara. Вроде бы все. Всем все можно, директория, куда будут складываться файлы, прописана. Осталость передать директорию root'у, иначе vsftpd не даст в нее писать. Сменим владельца:  

chown root ~ftp


Затем, дописываем в /etc/vsftpd.conf следующие строки:

#директория файловой помойки (для существующей учетной записи)
local_root=/home/lissyara
#непривелегированный пользователь (так советовали делать в документации, оступать
#не стал) 
nopriv_user=lissyara
#дабы пользователи не шлындали по директориям системы, запираем их в домашней
chroot_local_user=YES

Проверяем:

ftp 192.168.0.251
Connected to 192.168.0.251.
220 Welcome to blah FTP service.
Name (192.168.0.251:root): radiant
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> mkdir test
257 "/test" created
ftp> ls
229 Entering Extended Passive Mode (|||64303|)
150 Here comes the directory listing.
drwx------    2 1003     1003          512 May 28 00:47 test
226 Directory send OK.
ftp>

Работает, директория создается, файлы заливаются.
После чего, добавляем строку запуска в /etc/rc.conf

vsftpd_enable="YES" 

Перезагружаемся (можно запускать демона руками, из /usr/local/etc/rc.d/),
и проверяем:

USER     COMMAND    PID   FD PROTO  LOCAL ADDRESS         FOREIGN ADDRESS
root     vsftpd     705   0  tcp4   *:21                  *:*

Вариант, приведенный в статье, является самым простейшим, и не содержит и 10 части тех возможностей, которые предоставляет этот демон. Для более тонкой настройки, этого не самого плохого демона, посоветую гуглить интернет, а так же обратиться к руководству по vsftpd, переводх которого я выполнил.

Следует так же, отметить одну особенность, vsftpd не поддерживает перекодировку, поэтому, если вас не смущает нечитабелная windows кириллица, то можете смело ставить vsftpd и пользоваться.

Хочется выразить благодарность thresh'у, за помощь и тестирование моего ftp сервера. И Raven2000 за
внесение поправок.

В процессе поиска ответов, на возникавшие вопросы, были использованы следующие материалы:

Сайт vsftpd - http://vsftpd.beasts.org
Сайт разработчика, который дорабатывает vsftpd - http://vsftpd.devnet.ru
Статья CoderInside на opennet - http://www.opennet.ru/base/net/vftpd_virtual.txt.html



размещено: 2007-06-06,
последнее обновление: 2007-07-13,
автор: Andy


Trs, 2007-06-07 в 0:27:40

Это как это proftpd завязан с MySQL что за чушь?
Он завязан с тем с чем его завяжут :)

И отказываться от него не стоит, просто в Proftpd частенько дырочки находят ( чаще в модулях ), а так достойный демон с очень гибкой конфигурацией схожей с Apache.

Andy, 2007-06-07 в 0:41:40

Так у него в зависимостях MySQL. И хранит он учетки там. Я, кстати, и не говорил что он плохой.

Gloomy, 2007-06-07 в 6:11:11

Ну ей богу - для того что тут описано встроенный ftpd - более чем ...

L@mer, 2007-06-07 в 7:49:48

>#ftp    stream    tcp    nowait    root    /usr/libexec/ftpd    ftpd -l
>#ftp    stream    tcp6    nowait    root    /usr/libexec/ftpd    ftpd -l
>#ftp    stream    tcp    nowait    root    /usr/libexec/lukemftpd    ftpd -l -r
>#ftp    stream    tcp6    nowait    root    /usr/libexec/lukemftpd    ftpd -l -r
>vsftp   stream  tcp     nowait  root    /usr/local/libexec/vsftpd  vsftpd
>
>
>Перезагружаемся и..... Не хочет загружаться, жалуясь что:
>
>intetd[668]: vsftp/tcp: unknown service


ну так он у тебя и не заработает, тебе  правильно сказал при загрузки что vsftp/tcp: unknown service, нету такого сервиса в /etc/services, правильно будет написать
ftp   stream  tcp     nowait  root    /usr/local/libexec/vsftpd  vsftpd

dikens3, 2007-06-07 в 9:14:42

ascii_upload_enable=YES
ascii_download_enable=YES

Должно помочь с русскими буквами.
vsftpd мой любимый ftp-server

butcher, 2007-06-07 в 10:28:31

1. "Во FreeBSD, vsftpd, после инсталляции кладет конфигурационный файл в /usr/local/etc/vsftpd.conf, однако читает конфигурационный файл по адресу /etc/vsftp.conf."
Это неправда. При установке из портов пути заменяются на /usr/local/etc. Можете в этом убедится, сделайте make configure и посмотрите в файле tunables.c.

2. rc.d скрипт запуска так же есть в составе порта, устанавливайте с опцией WITH_RC_NG (или смотрите make config).

Vovka, 2007-06-07 в 12:10:58

В конце статьи присутствует ссылка на http://vsftpd.devnet.ru.
Вот он отлично работает с отечественными кодировками.

Trs, 2007-06-07 в 13:43:03

Andy
он может хранить учетки от системной базы до постгре.
и MySQL может и не использоваться, может конечно в портах чего понаставили, но с src все нормально.
Стал бы я использовать для раздачи файла Proftpd + mysql, не думаю. Для хостинга только удобно.

ffsdmad, 2007-06-08 в 15:31:09

помоему нет нужды писать свой стартовый скрипт
после устоновки из порта он должен быть в /usr/local/etc/rc.d/
но править rc.conf надо, как тут и написано
и я не понял какие проблемы с заливкой для анонистов
как то просто решается

Кот, 2007-06-09 в 0:22:08

чтоб не ругался
intetd[668]: vsftp/tcp: unknown service
добавь в /etc/services строчки
vsftp              21/tcp    #File Transfer [Control]
vsftp              21/udp    #File Transfer [Control]

rootd, 2007-10-04 в 16:01:24

Если собираете vsftpd от  http://vsftpd.devnet.ru то
стартовый скрипт не ставиться в rc.d, можно использовать пример из /usr/ports/ftp/vsftpd/files/vsftpd.sh.in поправив переменные для make

капрал, 2008-03-31 в 3:18:43

Хм... так интересно получилось. Давненько я не следил за развитием ftp серверов, а тут на днях около 6 разных осей перелопатил -  на всех vsftpd сотит! Так удивился сперва, а потом понял в чем дело: vsftpd очень легок в настройке.

Roman, 2008-06-29 в 23:28:16

Афтор - полный тормоз ! Комментарии запутаны и безграмотны, некоторых параметров, например, "anon_root", в оригинальном конфиге нет, откуда он их берет, не объясняет, русского языка не знает вообще :-8

Pr0x1ndei, 2008-06-30 в 6:45:40

Нармальная статья, коментариев мне было достаточно, недефолтные строчки беруться из мана, документации в инете достаточно, если есть желание копаца в английской документации

ононим, 2008-07-22 в 22:30:11

2Roman, 2008-06-29 в 23:28:16

сам ты тормоз. в оригинальном конфиге anon_root есть:
anon_root - Опция определяет директорию, которую vsftpd попытается изменить, после анонимного входа. Ошибка, тихо игнорируется.
По умолчанию: (нет)

re, 2008-12-09 в 14:31:49

"Честно говоря, у меня не получилось под анонимным пользователем заливать файлы"
Надо было корневой папке ftp назначить rwxrwxrwt

nikola93, 2008-12-18 в 11:00:33

max_per_ip=2
ограничение сесий с одного ip
в данном случии 2 сесии

Dmitry salt, 2009-04-01 в 10:50:43

А я скажу автору спасибо, ибо он хоть немного пролил свет на настройку этого демона. С уважением. Дмитрий. С-Пб

Самурай, 2009-08-04 в 3:45:29

"Затем, дописываем в /etc/vsftpd.conf следующие строки:"
Всётаки наверно
"Затем, дописываем в /usr/local/etc/vsftpd.conf следующие строки:"

Малость но есть дубы кто будут писать в /etc/vsftpd.conf :)))

kaducey, 2009-08-16 в 19:44:40

также выявилась фича с параметром local_umask.
Для того, что б пользователи заливали/создавали директории с правами 0775
local_umask=001
при установленных
anonymous_enable=NO
local_enable=YES
Связано это видимо с работой команды umask

ttys, 2010-02-26 в 8:44:19

в начале статьи забыл "/" добавить ))
chown root ~ftp
по моему надо так:
chown root ~/ftp

Genazb, 2012-04-17 в 11:15:39

Почему не запускается? Установил на FreeBSD 8.3
/etc/rc.conf
vsftpd_enable=\"YES\"

/usr/local/etc/vsftpd.conf
listen=YES
background=YES

/etc/inetd.conf
Все закомментировано

art, 2012-06-20 в 17:02:30

[цитата] Следует так же, отметить одну особенность, vsftpd не поддерживает перекодировку, поэтому, если вас не смущает нечитабелная windows кириллица, то можете смело ставить vsftpd и пользоваться.

...а как же, к примеру

charset_filter_enable=YES
charset_client=Windows-1251
charset_server=UTF-8





 

  Этот информационный блок появился по той простой причине, что многие считают нормальным, брать чужую информацию не уведомляя автора (что не так страшно), и не оставляя линк на оригинал и автора — что более существенно. Я не против распространения информации — только за. Только условие простое — извольте подписывать автора, и оставлять линк на оригинальную страницу в виде прямой, активной, нескриптовой, незакрытой от индексирования, и не запрещенной для следования роботов ссылки.
  Если соизволите поставить автора в известность — то вообще почёт вам и уважение.

© lissyara 2006-10-24 08:47 MSK

Время генерации страницы 0.0393 секунд
Из них PHP: 27%; SQL: 73%; Число SQL-запросов: 77 шт.
Исходный размер: 39357; Сжатая: 10200