Виртуальные пользователи в VSFTPD

Перед нами стоит задача предоставить множеству пользователей доступ по FTP, при этом не создавая для этого реальных пользователей. Ко всему этому, все пользователи будут работать на сервере от одного реального пользователя, к примеру www-data или ftp. Управление доступом к папкам будут регулироваться на уровне установленных прав для директорий. Ни один из пользователей не уйдет дальше своей папки.
Не пугайтесь большого количества действий — все довольно просто. Приступим.

1# Устанавливаем vsftpd:

apt-get install vsftpd
apt-get install vsftpd

2# Для создания базы виртуальных пользователей, нужна будет Berkeley DB. Соответственно устанавливаем:

apt-get install db4.6-util
apt-get install db4.6-util

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

#Поместим файл отдельно в директорию
mkdir /etc/vsftpd
touch /etc/vsftpd/vsftpdusers
#Читать и изменять файл сможет только root
chmod 0600 /etc/vsftpd/vsftpdusers
#Редактируем
vi /etc/vsftpd/vsftpdusers
#Поместим файл отдельно в директорию
mkdir /etc/vsftpd
touch /etc/vsftpd/vsftpdusers
#Читать и изменять файл сможет только root
chmod 0600 /etc/vsftpd/vsftpdusers
#Редактируем
vi /etc/vsftpd/vsftpdusers

Пользователи и их пароли задаются по отдельности на каждой строке:

web01
123456
user01
password
web01
123456
user01
password

Для каждого пользователя создаем папки в нужной директории. К примеру, у меня это /var/www

mkdir /var/www/web01
mkdir /var/www/user01
mkdir /var/www/web01
mkdir /var/www/user01

Указываем владельца папок, от которого будет осуществляться работа пользователей на сервере:

chown www-data:www-data /var/www/web01
chown www-data:www-data /var/www/user01
chown www-data:www-data /var/www/web01
chown www-data:www-data /var/www/user01

Остается создать базу пользователей из созданного выше текстового файла:

#Создаем DB
db4.6_load -T -t hash -f /etc/vsftpd/vsftpdusers /etc/vsftpd/users.db
#Устанавливаем права ради безопасности. Читать и изменять файл сможет только root
chmod 0600 /etc/vsftpd/users.db
#Создаем DB
db4.6_load -T -t hash -f /etc/vsftpd/vsftpdusers /etc/vsftpd/users.db
#Устанавливаем права ради безопасности. Читать и изменять файл сможет только root
chmod 0600 /etc/vsftpd/users.db

4# Редактируем файл настроек vsftpd:

vi /etc/vsftpd.conf
vi /etc/vsftpd.conf

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

# Активирум сервис
listen=YES
 
# Отключаем вход от анонимного пользователя
anonymous_enable=NO
 
# Разрешение подключаться локальным и виртуальным пользователям
local_enable=YES
 
# Работа с виртуальными пользователями
user_sub_token=$USER
 
# Путь к домашним каталогам виртуальных пользователей
local_root=/var/www/$USER
 
# Не даём вылазить за пределы своего домашнего каталога пользователям
chroot_local_user=YES
 
# Скрываем реальные ID пользователей работающих на сервере
hide_ids=YES
 
# Все виртуальные пользователи работают как гостевые
guest_enable=YES
 
# Настоящее имя пользователя, от которого работают гостевые
guest_username=www-data
 
# Виртуальные пользователи пользуются такими же привилегиями, что и локальные
virtual_use_local_privs=YES
 
# Глобальное разрешение операций записи
write_enable=YES
 
# Разрешаем работать в пассивном режиме
pasv_enable=Yes
pasv_max_port=65535
pasv_min_port=32768
 
# Имя службы PAM
pam_service_name=vsftpd.virtual
# Активирум сервис
listen=YES

# Отключаем вход от анонимного пользователя
anonymous_enable=NO

# Разрешение подключаться локальным и виртуальным пользователям
local_enable=YES

# Работа с виртуальными пользователями
user_sub_token=$USER

# Путь к домашним каталогам виртуальных пользователей
local_root=/var/www/$USER

# Не даём вылазить за пределы своего домашнего каталога пользователям
chroot_local_user=YES

# Скрываем реальные ID пользователей работающих на сервере
hide_ids=YES

# Все виртуальные пользователи работают как гостевые
guest_enable=YES

# Настоящее имя пользователя, от которого работают гостевые
guest_username=www-data

# Виртуальные пользователи пользуются такими же привилегиями, что и локальные
virtual_use_local_privs=YES

# Глобальное разрешение операций записи
write_enable=YES

# Разрешаем работать в пассивном режиме
pasv_enable=Yes
pasv_max_port=65535
pasv_min_port=32768

# Имя службы PAM
pam_service_name=vsftpd.virtual

5# Создадим новую службу авторизации для vsftpd. В каталоге /etc/pam.d создаем файл с именем указанным в vsftpd.conf в пункте pam_service_name

vi /etc/pam.d/vsftpd.virtual
vi /etc/pam.d/vsftpd.virtual

Заполняем файл следующим содержимым, где указываем на созданную нами базу без её расширения:

auth       required     pam_userdb.so db=/etc/vsftpd/users
account    required     pam_userdb.so db=/etc/vsftpd/users
session    required     pam_loginuid.so
auth       required     pam_userdb.so db=/etc/vsftpd/users
account    required     pam_userdb.so db=/etc/vsftpd/users
session    required     pam_loginuid.so

6# Все настройки завершены. Осталось перезапустить сервис:

/etc/init.d/vsftpd restart
/etc/init.d/vsftpd restart

Для заметки:
Более подробно ознакомиться с параметрами файла vsftpd.conf можно на www.lissyara.su

VN:F [1.9.22_1171]
Рейтинг: 9.0/10 (6 голоса(ов))
Виртуальные пользователи в VSFTPD, 9.0 out of 10 based on 6 ratings

  1. db4.6_load: команда не найдена
    решается:
    sudo apt-get install db-util
    и
    db_load -T -t hash -f /etc/vsftpd/vsftpdusers /etc/vsftpd/users.db
    вместо
    db4.6_load -T -t hash -f /etc/vsftpd/vsftpdusers /etc/vsftpd/users.db

  2. у меня при подключении к sftp выводиться вот такая ошибка при использовании логин — web01 и пароль 123456
    —————————————————
    Статус: Соединяюсь с 192.168.137.160…
    Ответ: fzSftp started, protocol_version=7
    Команда: open «web01@192.168.137.160» 22
    Команда: Pass: ******
    Ошибка: Сбой аутентификации.
    Ошибка: Критическая ошибка: Невозможно подключиться к серверу
    —————————————————

    где я не так мог сделать, прошу подсказать

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *