Прекрасно, когда нужна поддержка сайта, а ты сидишь с телефоном в руке и знаешь, чей номер набрать! Тел., Whatsapp, Viber, Telegram +7 953 5571863 Skype aitishnik
Айтишник РУ Нижний Новгород, Симферопольская, 21 ПН-ПТ 08 - 18
Настройка GNU/Linux Debian

Настройка FTP сервера. Более сложная конфигурация

Рассмотрим более сложную конфигурацию: анонимные пользователи всё так же имеют доступ только на чтение. Локальные пользователи не используются. Вместо них используются виртуальные пользователи, учётные записи которых хранятся в 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

Теперь можно рассмотреть настройку ftp сервера с шифрованием

Помните, что у нас вы можете не только купить готовый сайт или заказать его разработку, но и подобрать подходящий тариф поддержки сайта, заказать продвижение сайта в поисковых системах, а так же зарегистрировать домен в одной из двухсот доменных зон и выбрать недорогой тариф хостинга! Айтишник РУ

Задать вопрос

Об авторе:

ZolkinМеня зовут Андрей Золкин. Из более, чем пятнадцати лет работы в сфере информационных технологий, десять лет работаю с системами, базирующимися на открытом исходном коде. На страницах сайта Aitishnik.Ru веду блоги по CMC Joomla и Debian GNU/Linux.

 

Ещё статьи о Debian

    • Система помощи в Debian Linux

      Система помощи в Debian LinuxИзучать операционную систему и применять полученные знания на практике, не заглядывая в документацию, невозможно. Операционные системы Linux/Unix отлично документированы. Можно найти ответ на любой вопрос; нужно только знать где искать:...

    • SSH Подключение с использованием открытого ключа...

      SSH Подключение с использованием открытого ключа...Для подключения с авторизацией по открытому ключу сначала нужно сгенерировать секретный ключ на стороне клиента. Делаем это с правами обычного пользователя: $ ssh-keygen –t rsa В процессе генерации пары ключей сначала будет предложено ввести желаемое название...

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

      Настройка FTP сервера в Debian 5 (Lenny)В этой статье я опишу настройку FTP сервера на базе Debian 5 (Lenny). Будем использовать vsftpd. VSFTPD (Very Secure FTP Daemon) — как следует из названия, очень защищённый демон FTP, с хорошей производительностью, поддерживаются: IPv6,...

    • Работаем с wget в Debian

      Работаем с wget в DebianОдна из самых частых задач при работе с любой операционной системой – это скачивание файлов. Существует несколько способов получения файлов с удаленного компьютера. В этой статье я расскажу, как решить задачу скачивания файлов в Debian с...

    • Настройка FTP сервера. Более сложная конфигурация...

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

    • Настройка DHCP в Debian 5 (Lenny)

      Настройка  DHCP в Debian 5 (Lenny)DHCP реализован в Debian в виде двух частей: серверной (dhcp3-server) и клиентской (dhcp3-client). Серверная часть отвечает за назначение и отзыв IP-адресов клиентам, при входе и выходе из сети. Клиентская часть запускается на стороне...