Установка и настройка серверов Linux,создание сайтов, установка и настройка Asterisk PBX, Linux для начинающих и не только.
Получать статьи этого сайта на почту:

 

01
Feb 2012
sergldom
автор
0
комментариев
Рейтинг статьи:
5
Average: 4.5 (2 votes)

Установка и настройка FTP сервера vsftpd с патчем ext1(и без) для изменения кодировки на лету (и без)

<![CDATA[]]>vsftpd<![CDATA[]]>  - легковесный, эффективный FTP-сервер, который позиционируется как очень безопасный фтп сервер. На данный момент vsftpd используется на большинстве серверов под управлением linux. Среди них такие гиганты как: ftp.redhat.com, ftp.suse.com, ftp.debian.org, ftp.gnu.org, ftp.gnome.org, ftp.kde.org. Как я считаю коментарии здесь излишни.

 

Установка vsftpd без патча перекодирующего имена файлов на лету

Если необходимости в перекодировке на лету нет, то для установки vsftpd достаточно и стандартного пакета установленного с оффициального репозитория командой:

aptitude install vsftpd

Отличие в настройке будет только в конфигурационном файле (находящемся ниже) из которого необходимо убрать строки:

convert_charset_enable=1
local_charset=UTF8
remote_charset=WIN1251
double_377=0

Установка vsftpd с патчем перекодирующем имена файлов на лету, используем патч для vsftpd - ext1

vsftpd-2.1.0+ (ext build 1) released

Что этот патч добавляет к серверу:

1. Добавлено конвертирование символов между некоторыми кодовыми страницами.
2. Добавлена поддержка правил доступа для анонимных пользователей.
3. Добавлены правила на доступ пользователей с определенных адресов.
4. Разрешать или запрещать удаление файлов анонимным пользователям.
5. Добавлена возможность менять владельца закаченого файла анонимным пользователем на его IP.
6. Добавлен параметр double_377 (по-умолчанию установлен в 1), который позволяет отключать специфичный символ протокола телнета с кодом \377 (255 \0xFF).
7. Изменен алгоритм поиска библиотек в "vsf_findlibs.sh".
8. Возможность задавать разные скорости на upload и download файлов.
9. Остальные функции были убраны из расширеного билда.

Задача:
Создать директорию в которую может писать аноним, но ему запрещено создавать папки, редактировать и удалять папки и файлы. Создать пользователя который сможет администрировать все что внутри папки.

Если Вы желаете, можете на сайте <![CDATA[]]>http://vsftpd.devnet.ru<![CDATA[]]> скачать новые патчи и самостоятельно патчить с новыми. Я пока не вижу смысла - меня функционал устраивает полностью (но конечно если будут многочисленные просьбы и будет время, то может быть), сервер настроенный на этом софте работает стабильно и безотказно несколько лет.
   
Итак приступим:

Если Вам лениво самостоятельно собрать пакет, можете скачать у меня для дистрибутива Debian по ссылкам:

Cкачать vsftpd_ext1 для Debian Lenny на amd64

Либо скачать с консоли для сервера Debian Lenny на архитектуру amd64:

wget http://vkusnoserver.pp.ua/downloads/ftp/vsftpd-ext_2.1.0-ext1_amd64.deb

Устанавливаем пакет командой:

dpkg -i vsftpd-ext_2.1.0-ext1_amd64.deb

Cкачать vsftpd_ext1 для Debian Squeeze на i386

либо скачать с консоли для сервера Debian Squeeze на архитектуру i386:

wget http://softnastroy.com/downloads/ftp/vsftpd-ext_2.1.0-ext1_i386.deb

Устанавливаем пакет командой:

dpkg -i vsftpd-ext_2.1.0-ext1_i386.deb

!!! Внимание если после установки система ругается, что пакет не настроен, выполните команду которая самостоятельно установит все недостающие зависимости:

apt-get -f install

VSFTPD с патчем перекодировки на лету установлен.

Настройка ftp сервера находится ниже в инструкции.

Если же вам хочется, можете установить собрав пакет самостоятельно из исходных кодов, тогда приступим.
На сервере создаём папку в которой будем выполнять все действия по сборке и установке и переходим в неё  под пользователем root:

mkdir -p /usr/src/ftp
cd /usr/src/ftp

Теперь качаем исходники vsftpd с патчем:

wget http://softnastroy.com/downloads/ftp/vsftpd-ext_2.1.0-ext1.diff.gz
wget http://softnastroy.com/downloads/ftp/vsftpd-ext_2.1.0-ext1.dsc
wget http://softnastroy.com/downloads/ftp/vsftpd-ext_2.1.0.orig.tar.gz

Добавляем репозиторий исходников в файл /etc/apt/sources.list

deb http://mirror.yandex.ru/debian squeeze main contrib non-free
deb-src http://mirror.yandex.ru/debian squeeze main

Обновляем репозиторий:

aptitude update

Устанавливаем програмное обеспечение для сборки пакета:

aptitude install build-essential

Далее накладываем патч на исходники с автоматической распаковкой:

dpkg-source -x vsftpd-ext_2.1.0-ext1.dsc
dpkg-source: предупреждение: распаковка неподписанного пакета с исходным кодом (vsftpd-ext_2.1.0-ext1.dsc)
dpkg-source: инфо: извлечение vsftpd-ext в vsftpd-ext-2.1.0
dpkg-source: инфо: распаковывается vsftpd-ext_2.1.0.orig.tar.gz
dpkg-source: инфо: накладывается vsftpd-ext_2.1.0-ext1.diff.gz

Далее переходим в распакованную папку:

cd vsftpd-ext-2.1.0/

Запускаем доустановку пакетов необходимых для сборки исходников:

apt-get build-dep vsftpd

И собираем пакет командой:

dpkg-buildpackage -rfakeroot

После сборки переходим на директорию вверх:

cd ..

и выполнив команду ls видим, что deb пакет собран:

ls
vsftpd-ext-2.1.0               vsftpd-ext_2.1.0-ext1.dsc           vsftpd-ext_2.1.0-ext1_i386.deb
vsftpd-ext_2.1.0-ext1.diff.gz  vsftpd-ext_2.1.0-ext1_i386.changes  vsftpd-ext_2.1.0.orig.tar.gz

Устанавливаем собранный пакет vsftpd командой:

dpkg -i vsftpd-ext_2.1.0-ext1_i386.deb

Выбор ранее не выбранного пакета vsftpd-ext.
(Чтение базы данных ... на данный момент установлено 44980 файлов и каталогов.)
Распаковывается пакет vsftpd-ext (из файла vsftpd-ext_2.1.0-ext1_i386.deb)...
Настраивается пакет vsftpd-ext (2.1.0-ext1) ...
Starting FTP server: vsftpd.
Обрабатываются триггеры для man-db ...

Конфигурационный файл vsftpd сервера находится по адресу /etc/vsftpd.conf

Мой рабочий конфигурационный файл (можно скопировать и вставить в свой):

listen=YES
anonymous_enable=YES
local_enable=YES
write_enable=YES
local_umask=000
anon_upload_enable=YES
anon_umask=000
anon_mkdir_write_enable=NO
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_file=/var/log/vsftpd.log
ftpd_banner=Welcome to FTP server firm name.
chroot_local_user=YES
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd-ext
rsa_cert_file=/etc/ssl/private/vsftpd.pem
convert_charset_enable=1
local_charset=UTF8
remote_charset=WIN1251
double_377=0

Настраиваем анонима и администратора ftp сервера

Добавляем пользователя, который будет администрировать папку настроенную далее:

adduser ftpadmin

Команда

cat /etc/passwd | grep ftp

выводит информацию по пользователю ftp:

ftp:x:105:107:ftp daemon,,,:/srv/ftp:/bin/false

Видим, что домашняя папка пользователя /srv/ftp, её распотожение нам подходит и менять мы его не будем.
Потому эту папку и будем настраиваем как основную для работы с фтп

Добавляем существующего пользователя ftpadmin в группу ftp командой:

usermod -a -G ftp ftpadmin

Создаем внутри /srv/ftp папку в которой сможет создавать и скачивать файлы анонимный пользователь:

mkdir -p /srv/ftp/upload
chmod -R 777 /srv/ftp/upload

Создаем внутри папку в которой не сможет заходить аноним, только для администратора:

mkdir -p /srv/ftp/install

Даем права все права на папку для пользователя администратора и его группы, все остальные(включая анонима) идут лесом.

chmod -R 770 /srv/ftp/install

Изменяем домашнюю папку для пользователя ftpadmin на папку /srv/ftp/

usermod -d /srv/ftp/ ftpadmin

Изменяем пользователя и группу для домашней папки:

chown -R ftpadmin:ftpadmin /srv/ftp/

Перегружаем сервер командой:

reboot

И после перезагрузки пробуем подключится анонимом, залить файл и попробовать его удалить, а также проверяем работу под пользователем ftpadmin.
Дальше все просто по аналогии. Добавляем (если необходимо) пользователей администраторов и все.

P.S. эта инструкция актуальна только если пользователей мало, если же пользователей много то лучше использовать не системных пользователей а виртуальных.

Рейтинг статьи: 

5
Average: 4.5 (2 votes)

Вам понравилась статья? Хотите получать уведомления о выходе новых статей с этого сайта на свой почтовый адрес? Подписывайтесь пожалуйста. Введите свой почтовый адрес и нажмите кнопку Хочу получать статьи!

<![CDATA[]]><![CDATA[]]>

 

*Адреса электронной почты не разглашаются и не предоставляются третьим лицам для коммерческого или некоммерческого использования.

 

 
 

 

Add new comment

Filtered HTML

  • Search Engines will index and follow ONLY links to allowed domains.

  • Web page addresses and e-mail addresses turn into links automatically.
  • Allowed HTML tags: <a> <em> <strong> <cite> <blockquote> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Lines and paragraphs break automatically.

Plain text

  • Allowed HTML tags: <a> <em> <strong> <cite> <blockquote> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Web page addresses and e-mail addresses turn into links automatically.
  • Lines and paragraphs break automatically.
  • Search Engines will index and follow ONLY links to allowed domains.

CAPTCHA
This question is for testing whether you are a human visitor and to prevent automated spam submissions.