Настройка 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 и попадать в его домашний каталог.
Скачать пакет файлов, используемых в статье можно по следующим ссылкам:
Теперь можно рассмотреть настройку ftp сервера с шифрованием
Помните, что у нас вы можете не только купить готовый сайт или заказать его разработку, но и подобрать подходящий тариф поддержки сайта, заказать продвижение сайта в поисковых системах, а так же зарегистрировать домен в одной из двухсот доменных зон и выбрать недорогой тариф хостинга! Айтишник РУ
Об авторе:
Меня зовут Андрей Золкин. Из более, чем пятнадцати лет работы в сфере информационных технологий, десять лет работаю с системами, базирующимися на открытом исходном коде. На страницах сайта Aitishnik.Ru веду блоги по CMC Joomla и Debian GNU/Linux.
Ещё статьи о Debian
-
Система помощи в Debian Linux
Изучать операционную систему и применять полученные знания на практике, не заглядывая в документацию, невозможно. Операционные системы Linux/Unix отлично документированы. Можно найти ответ на любой вопрос; нужно только знать где искать:...
SSH Подключение с использованием открытого ключа...
Для подключения с авторизацией по открытому ключу сначала нужно сгенерировать секретный ключ на стороне клиента. Делаем это с правами обычного пользователя: $ ssh-keygen –t rsa В процессе генерации пары ключей сначала будет предложено ввести желаемое название...
Настройка FTP сервера в Debian 5 (Lenny)
В этой статье я опишу настройку FTP сервера на базе Debian 5 (Lenny). Будем использовать vsftpd. VSFTPD (Very Secure FTP Daemon) — как следует из названия, очень защищённый демон FTP, с хорошей производительностью, поддерживаются: IPv6,...
Работаем с wget в Debian
Одна из самых частых задач при работе с любой операционной системой – это скачивание файлов. Существует несколько способов получения файлов с удаленного компьютера. В этой статье я расскажу, как решить задачу скачивания файлов в Debian с...
Настройка FTP сервера. Более сложная конфигурация...
Рассмотрим более сложную конфигурацию ftp сервера: анонимные пользователи всё так же имеют доступ только на чтение. Локальные пользователи не используются. Вместо них используются виртуальные пользователи, учётные записи которых хранятся...
Настройка DHCP в Debian 5 (Lenny)
DHCP реализован в Debian в виде двух частей: серверной (dhcp3-server) и клиентской (dhcp3-client). Серверная часть отвечает за назначение и отзыв IP-адресов клиентам, при входе и выходе из сети. Клиентская часть запускается на стороне...