вторник, 17 января 2012 г.

Debian GNU/Linux 6.0 squeeze x86_64 + vsFTPd(RUS)

По мативам одной из предыдущих статей CentOS release 6.2 x86 + vsFTPd(RUS) в купе с вопросами а почему ни на Debian. Вот вам на Debian господа хорошие.

Итак нам нужен FTP сервер с поддержкой русской кодировки, с условием, чтобы каждый пользователь видел только свою домашнюю директорию (chroot).
apt-get install vsftpd -y
проверим текущую версию демона
vsftpd -v
vsFTPd version 2.3.2
Ставим необходимые компоненты для сборки
apt-get build-dep vsftpd -y


Идём по адресу http://vsftpd.devnet.ru/rus/#download и качаем подходящую версию, в моём случае это "vsFTPd 2.3.5+". Компилируем её, и заменяем бинарник.
cd /usr/src/
wget http://vsftpd.devnet.ru/files/2.3.5/ext.1/vsFTPd-2.3.5-ext1.tgz
tar xfv vsFTPd-2.3.5-ext1.tgz
cd vsFTPd-2.3.5-ext.1/

cat > builddefs.h <<EOF
#ifndef VSF_BUILDDEFS_H
#define VSF_BUILDDEFS_H

#undef VSF_BUILD_TCPWRAPPERS
#define VSF_BUILD_PAM
#undef VSF_BUILD_SSL

#define VSF_CONFIG_PATH "/etc/"
#define VSF_CONFIG_PREFIX "vsftpd."

#endif /* VSF_BUILDDEFS_H */
EOF

make
cp /usr/sbin/vsftpd /usr/sbin/vsftpd.bak
/etc/init.d/vsftpd stop
Stopping FTP server: vsftpd.
cp ./vsftpd /usr/sbin/vsftpd
Пишем файл конфигурации
cp /etc/vsftpd.conf /etc/vsftpd.conf.orig

cat > /etc/vsftpd.conf <<EOF
listen=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_file=/var/log/vsftpd.log
xferlog_std_format=YES
ascii_upload_enable=YES
ascii_download_enable=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/private/vsftpd.pem

allow_writable_root=YES
convert_charset_enable=YES
local_charset=UTF8
remote_charset=WIN1251
EOF
Занесём всех пользователей в файл chroot_list, чтобы они могли видеть только свой каталог.
ls -1 /home/ | grep -v "lost+found" > /etc/vsftpd/chroot_list
Запустим сервер
/etc/init.d/vsftpd start
Starting FTP server: vsftpd.
Кстати говоря у меня почему то после установки патченого файла vsftpd перестал выключаться стандартным способом.
/etc/init.d/vsftpd stop
Stopping FTP server: No /usr/sbin/vsftpd found running; none killed.
vsftpd.
По этому я выключаю его так
kill `ps ax | grep vsftpd | awk '{ printf $1" " }'`
Но по скольку эту процедуру приходится проделывать крайне редко, думается мне что тратить силы на поиск решения не целесообразно.


Enhanced by Zemanta