Установка и настройка vsftpd
Материал из Wiki.UnixForum.org
Содержание |
В данной статье речь будет идти о vsftpd, правда не об официальном, а на vsftpd от vsFTPd.devnet.ru, т.к. он имеет дополнительные возможности.
Причины, по которым, стоит выбирать именно vsftpd:
- Простой и удобный файл конфигурации с отличной документацией в man vsftpd.conf.
- Виртуальные пользователи. Отлично работает, хотя мне это пока не нужно, но кто знает.
- Мощнейшее управление пользователями.
- Интеграция с SSL. (Еще предстоит настроить)
- Поддержка перекодировок. Можно прописывать для каждого пользователя отдельно.
- Возможность задавать правила доступа для анонимных пользователей.
[править] Установка (Gentoo Linux)
Скачиваем архив с ebuild'ом vsftpd-2.0.5e.
Распаковываем содержимое в свой overlay, например в /usr/overlay/portage. Далее скачиваем сам vsftpd и кладём в /usr/portage/distfiles/.
После того как все это сделано, набираем emerge vsftpd.
В Gentoo Linux пользователь ftp создаётся автоматически с домашней директорией в /home/ftp. Если у вас не Gentoo Linux, то вам надо выполнить следующее:
# useradd nobody # mkdir /home/ftp # useradd -d /home/ftp ftp # chown root.root /home/ftp # chmod og-w /home/ftp
[править] Настройка
Сначала нужно определиться что нам нужно от сервера. Лично мне нужно было, пускать анонимусов с правом записи в /home/ftp/incomming и чтением всего остального. Далее пускать только определенных локальных пользователей в определенные директории. Для анонимусов, т.к. они все у меня пользуются виндовсом, сделать перекодировку utf8(сервер)<->cp1251(клиент), для остальных пользователей перекодировку не делать. Конфигурационный файл сервера находится в /etc/vsftpd/vsftpd.conf.
listen=YES #запускается без использования xinetd. listen_address=172.16.23.125 #привязка к ip и порту. listen_port=30005 anonymous_enable=YES #разрешаем вход анонимусам. local_enable=YES #разрешаем вход локальным пользователям. write_enable=YES #разрешаем выполнение команд STOR, DELE, RNFR, RNTO, MKD, RMD, APPE and SITE. anon_upload_enable=YES anon_mkdir_write_enable=YES anon_other_write_enable=YES #даем анонимусам право записи и т.п. dirmessage_enable=YES #показывать сообщение при первом входе в каталог. connect_from_port_20=YES chown_uploads=YES #изменять владельца загуржаемых файлов chown_username=ftpserg #собственно указывается новый владелец xferlog_enable=YES xferlog_file=/var/log/vsftpd.log idle_session_timeout=600 data_connection_timeout=120 nopriv_user=nobody ascii_upload_enable=NO ascii_download_enable=NO ftpd_banner=Welcome to CrazyNetwork FTP server. convert_charset_enable=YES #включаем перекодировку local_charset=UTF8 #локаль сервера remote_charset=WIN1251 #локаль клиента user_config_dir=/etc/vsftpd/vusers #указываем директорию с конфигурациями наших пользователей chroot_local_user=YES #чрутим локальных пользователей в их домашний каталог chroot_list_enable=YES chroot_list_file=/etc/vsftpd/chroot_list userlist_file=/etc/vsftpd/user_list #список пользователей которым позволено подключаться к серверу userlist_enable=YES # сами userlist_deny=NO # правила
В /etc/vsftpd/user_list прописываем имена пользователей, которым будет разрешено подключаться к серверу, каждое имя с новой строки, анонимуса и ftp тоже следует вписать :) Сейчас у нас сервер настроен на допуск пользователей из списка с перекодировкой utf8<->cp1251. Для пользователя ftpserg отключим перекодировку. Для этого создаём файл: /etc/vsftpd/vusers/ftpserg и прописываем туда строку:
convert_charset_enable=NO
Если этого пользователя надо чрутнуть не в /home/ftp, а наример в /var/www/mysite.com/, то в этот же файл пишем следующее:
local_root=/var/www/mysite.com/
Да, еще нужно правильно выставить правда на содержимое вашего ftp-сервера. Чтобы анонимусы могли писать в incomming на это папку следует поставить права 777 или 773, кому как нравится :)
[править] Запуск
/etc/init.d/vsftpd start
И все, радуемся жизни :)
[править] Примеры содержания файлов
/etc/vsftpd/user_list
# cat /etc/vsftpd/user_list ftpserg ftpmax
Такое содержание будет и в /etc/vsftpd/chroot_list, у меня он просто пуст.
# ls /etc/vsftpd/vusers/ ftpserg pioneer vid
Тоесть в этой директории создаем файлы конфигурации и именуем их, как ники соответствующих пользователей, которым мы хотим сделать индивидуальные конфигурации.
# cat /etc/vsftpd/vusers/ftpserg convert_charset_enable=NO
В данном случае я для пользователя ftpserg не делаю перекодировку имен файлов, а оставляю все как есть.
[править] Права доступа для anonymous
Для это надо добавить в /etc/vsftpd/vsftpd.conf (/etc/vsftpd.conf) две строчки:
add_default_rule=1 pasv_addr_rules=/etc/vsftpd/vsftpd.pasv_rules.conf #Указывает серверу откуда читать данные с правилами доступа. \ #Можно заменить на /etc/vsftpd.pasv_rules.conf Кому как удобней.
Далее надо создать vsftpd.pasv_rules.conf тут /etc/vsftpd/ или тут /etc/ в зависимости от того как вы указывали в vsftpd.conf. В нем создаем в таком виде правила:
# LocalIP RemoteMask PassiveAddress rem_char anon anon_upl anon_md anon_oth anon_del 0.0.0.0 192.168.0.175/32 0.0.0.0 UTF8 yes yes yes yes yes #Можно располагать и через один пробел, так сделано для наглядности.
Поподробней о параметрах:
LocalIP и PassiveAddress - указываем ip FTP-сервера. RemoteMask - указываем ip клиента rem_char - кодировка, которую использует пользователь. (UTF8, WIN1251, KOI8R и другии) anon - тут можно разрешить/запретить анонимный вход. (yes/no) anon_upl - разрешить/запретить загрузку на сервер. (yes/no) anon_md - разрешить/запретить создание каталогов. (yes/no) anon_oth - разрешить/запретить запись на сервере. (yes/no) anon_del - разрешить/запретить удалять файлы, папки. (yes/no)
[править] От автора
Написал: serg_sk
Дополнения: kidoz
P.S. Замечания и дополнения приветствуются.
Оригинал тут.
