Установка и настройка 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. Замечания и дополнения приветствуются.
Оригинал тут.

see also