Самое прекрасное — это когда нужна поддержка сайта, а ты сидишь с телефоном
в руке и ЗНАЕШЬ, чей номер набрать! т. +7 831 4637611 моб. +7 910 3820622Айтишник РУ Нижний Новгород, Симферопольская, 21
A+ A A-

Настройка FTP сервера в Debian 5 (Lenny)

Более сложная конфигурация

Рассмотрим более сложную конфигурацию: анонимные пользователи всё так же имеют доступ только на чтение. Локальные пользователи не используются. Вместо них используются виртуальные пользователи, учётные записи которых хранятся в MySQL. Каждому виртуальному пользователю можно задать свои параметры работы с FTP. Используется PAM авторизация.

За основу возьмём предыдущую конфигурацию. Установим MySQL и поддержку авторизации PAM:

# aptitude install mysql-server mysql-client libpam-mysql

Во время установки будет создан суперпользователь root для управления MySQL. Нужно будет задать пароль для этого пользователя.

Авторизуемся в MySQL:

# mysql -u root -p

Создаём базу данных для хранения информации о пользователях FTP:

CREATE DATABASE vsftpd;

GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON vsftpd.* TO 'vsftpd'@'localhost' IDENTIFIED BY 'passftpd';

FLUSH PRIVILEGES;

Создаём таблицу для хранения пользователей и паролей. Таблица называется users и содержит три поля: id — целочисленный идентификатор пользователя, login — имя пользователя и pass — пароль пользователя. Под пароль отведено 60 символов, т. к. пароли хранятся в зашифрованном виде и длина шифра на много превышает длину секретного слова. Логины пользователей в таблице будут уникальными:

USE vsftpd;

CREATE TABLE users (

id INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,login VARCHAR(60) NOT NULL UNIQUE ,pass VARCHAR(60) NOT NULL) ;

Заводим в нашей базе данных пользователя для работы.

INSERT INTO users (login, pass) VALUES('firstuser', PASSWORD('topsecret'));

Выходим из MySQL:

quit;

Открываем файл /etc/vsftpd.conf и редактируем его, чтобы получилось следующее:

# Запускать vsftpd в независимом режиме

listen=YES

# Установки для публичного FTP

max_clients=100

max_per_ip=40

hide_ids=YES

idle_session_timeout=600

data_connection_timeout=120

dirmessage_enable=YES

ftpd_banner=Welcome!

# Делаем анонимный доступ

anonymous_enable=YES

# Анонимные входят без пароля

no_anon_password=YES

# Анонимные будут попадать в публичную директорию

anon_root=/var/ftp/pub

anon_umask=022

# Гостевой вход. Не анонимный вход рассматривается как гостевой

guest_enable=YES

guest_username=ftpuser

nopriv_user=ftpuser

# Исползуем PAM

pam_service_name=vsftpd

# Виртуальные пользователи будут иметь права локальных пользователей

virtual_use_local_privs=YES

local_root=/var/ftp/$USER

user_sub_token=$USER

# Специальные настройки пользователей находятся в этой директории

user_config_dir=/etc/vsftpd/user_conf

# Разрешаем вход для теперь уже виртуальных пользователей

local_enable=YES

write_enable=YES

local_umask=022

# Виртуальные пользователи будут входить в свои «домашние» каталоги

chroot_local_user=YES

chroot_list_enable=NO

# Сообщения будут записываться в собственный журнал

xferlog_enable=YES

xferlog_file=/var/log/vsftpd.log

Создаём директорию, в которой будут располагается конфигурационные файлы пользователей FTP сервера:

# mkdir -p /etc/vsftpd/user_conf

Настроим PAM авторизацию. Сделаем резервную копию файла /etc/pam.d/vsftpd

# cp /etc/pam.d/vsftpd /etc/pam.d/vsftpd_old

Очистим его:

# cat /dev/null > /etc/pam.d/vsftpd

И отредактируем следующим образом:

# vim /etc/pam.d/vsftpd

auth required pam_mysql.so user=vsftpd passwd=passftpd host=localhost db=vsftpd table=users usercolumn=login passwdcolumn=pass crypt=2

account required pam_mysql.so user=vsftpd passwd=passftpd host=localhost db=vsftpd table=users usercolumn=login passwdcolumn=pass crypt=2

Рестартуем vsftpd:

# /etc/init.d/vsftpd restart

Создаём для пользователя firstuser директорию:

# mkdir /var/ftp/firstuser

Меняем владельца:

# chown ftpuser:nogroup /var/ftp/firstuser

Создаём файл со специальными настройками для firstuser. Для этого, в папке /etc/vsftpd_user_conf создадим файл с именем пользователя

# touch /etc/vsftpd/user_conf/firstuser

и подредактируем его:

# vim /etc/vsftpd/user_conf/firstuser

В данном файле можете зададим следующие параметры:

# Домашний каталог для пользователя firstuser. Можно задать какой #угодно путь к домашнему каталогу. Например:/var/ftp/

local_root=/var/ftp/firstuser/

# Ограничим скорость для данного пользователя

local_max_rate=15000

ну и так далее для для разных параметров.

Сохраняем файл и рестартуем vsftpd:

/etc/init.d/vsftpd restart

Создадим ещё одного пользователя: seconduser.

Mysql -u root -p

USE vsftpd;

INSERT INTO users (login, pass) VALUES('seconduser', PASSWORD('topsecret'));

quit;

Создаём для пользователя seconduser директорию:

# mkdir /var/ftp/seconduser

Меняем владельца:

# chown ftpuser:nogroup /var/ftp/seconduser

Создаём файл со специальными настройками для seconduser. Для этого, в папке /etc/vsftpd_user_conf создадим файл с именем пользователя

# touch /etc/vsftpd/user_conf/seconduser

и подредактируем его:

# vim /etc/vsftpd/user_conf/seconduser

Нарпимер, запретим запись:

write_enable=NO

Рестартуем vsftpd. Всё.

Не забываем, что владельцем корневого каталога /var/ftp должен быть пользователь ftpuser с правами 755. Если пользователю не определены персональные настройки, он будет иметь права пользователя ftpuser и попадать в его домашний каталог.

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

в формате zip

в формате tar.bz2

Автор: Золкин А. Н.