Этот способ организации доступа к vsftpd наиболее безопасен.
Установка ПО
# apt-get install vsftpd
Т.к. в процессе настройки потребуется создать базу данных Berkeley DB, установим набор инструментов, позволяющий это сделать:
# apt-get install db4.8-util
Создание базы данных виртуальных пользователей
# mkdir /etc/vsftpd && nano /etc/vsftpd/logins.txt
внесем логины и пароли в таком вот формате:
login1 passwd1 login2 passwd2
Таким образом мы подготовили текстовый файл для создания БД из двух пользователей login1 и login2 с паролями password1 и password2 соответственно. Теперь из этого файла можно создать базу данных Berkeley DB, в файле /etc/vsftpd/users.db:
# db4.8_load -T -t hash -f /etc/vsftpd/logins.txt /etc/vsftpd/users.db
# chmod 0600 /etc/vsftpd/users.db
Создадим скрипт для внесения пользователей:
# nano /etc/vsftpd/useradd.sh
со следующим содержанием:
#!/bin/sh cp /etc/vsftpd/users.db /etc/vsftpd/users.db_bac rm -f /etc/vsftpd/users.db db4.8_load -T -t hash -f /etc/vsftpd/logins.txt /etc/vsftpd/users.db chmod 0600 /etc/vsftpd/users.db service vsftpd restart
# chmod +x /etc/vsftpd/useradd.sh
Создадим дополнительный каталог для настроек пользователей:
# mkdir /etc/vsftpd/users
Приводим файл /etc/vsftpd.conf
# nano /etc/vsftpd.conf
к следующему содержанию:
# Сервер не будет анонимным anonymous_enable=NO # Разрешение подключаться локальным и виртуальным пользователям local_enable=YES # Разрешаем пользователям записывать/изменять свою информацию на сервер. # если нужно запретить запись данных - write_enable=NO # Более тонкий тюнинг через "cmds_allowed=PASV,RETR,QUIT" write_enable=YES # Путь к домашним каталогам виртуальных пользователей user_sub_token=$USER local_root=/home/vsftpd/$USER # Включение опции необходимо для предоставления возможности загружать на сервер # файлы виртуальным пользователям anon_upload_enable=YES # Включение этой опции, позволяет анонимным пользователям создавать новые # каталоги в соответствии с определенными для этого условиями. Для того чтобы # это работало опция write_enable должна быть включена, и анонимный пользователь # должен иметь права на запись в данном каталоге anon_mkdir_write_enable=NO # Если выбрано YES, анонимные пользователи могут выполнять операции записи # отличные от загрузки на сервер и создания каталогов, такие как удаление и # переименование. Это обычно не рекомендуется, но все таки такая возможность # присутствует для полноты. anon_other_write_enable=NO # Не даём вылазить за пределы своего домашнего каталога пользователям chroot_local_user=YES # Т.к. будем использовать виртуальных пользователей то нужно привести их к # пользователю сервера с минимальными правами guest_enable=YES # Имя "гостевой" учётной записи guest_username=ftp # Укажем папку для хранения дополнительных конфигов user_config_dir=/etc/vsftpd/users/ # Виртуальные пользователи пользуются такими же привилегиями, что и локальные virtual_use_local_privs=YES # выставим нужные права chmod_enable=YES # Если включить, у всех анонимно закачанных файлов на сервер будут # изменены владельцы на пользователя в указанного в chown_username chown_uploads=YES # В этом параметре указывается имя пользователя, назначаемого хозяином анонимно # загруженных на сервер файлов. Эта опция уместна только при включенной опции # chown_uploads chown_username=ftp # Маска создание и чтение файлов # "-rw-r--r--" local_umask=0022 anon_umask=0007 # Маска файлов назначаемая при загрузке файлов на сервер. При желании возможно # изменить на 0777 если есть необходимость сделать исполняемыми загружаемые на # сервер файлы. Default: 0666 file_open_mode=0777 listen=YES listen_port=21 pasv_min_port=30000 pasv_max_port=30999 # Включаем ведение лога операций. xferlog_enable=YES # Расширенные логи всех команд log_ftp_protocol=YES xferlog_std_format=YES xferlog_file=/var/log/vsftpd.log tcp_wrappers=YES dirmessage_enable=YES # Скрываем реальные ID пользователей от посторонних глаз hide_ids=YES # Имя службы PAM (должно совпадать с именем соответствующего файла в /etc/pam.d) pam_service_name=vsftpd.virtual # Активируем список пользователей которым запрещен вход по FTP (например, root) userlist_enable=YES userlist_file=/etc/ftpusers # Запрещаем рекурсивный вызов "ls -R" ls_recurse_enable=NO ftpd_banner=%company name%
Создание службы PAM
Теперь, чтобы PAM мог корректно аутентифицировать виртуальных пользователей vsftpd, необходимо создать соответствующую службу. В каталоге /etc/pam.d создадим файл с именем, указанным в параметре pam_service_name файла /etc/vsftpd.conf
# nano /etc/pam.d/vsftpd.virtual
Добавим в файл следующее содержимое (обратите внимание на отсутствие расширения '.db' при указании имени файла БД!):
auth required pam_userdb.so db=/etc/vsftpd/users account required pam_userdb.so db=/etc/vsftpd/users session required pam_loginuid.so
Создание домашних каталогов виртуальных пользователей
Прежде чем виртуальные пользователи смогут подключиться к серверу, для них должны быть созданы соответствующие домашние каталоги, путь к которым определён значением параметра local_root конфигурационного файла /etc/vsftpd.conf. После этого, необходимо сменить владельца созданных каталогов на пользователя, чья учётная запись фигурирует в параметре guest_username конфигурационного файла vsftpd.
# mkdir /home/vsftpd
# mkdir -p /home/vsftpd/{login1,login2}
# chown -R ftp:nogroup /home/vsftpd/
Перезапуск сервера
Теперь, когда все настройки завершены, необходимо перезапустить vsftpd, чтобы изменения вступили в силу
# service vsftpd restart
Настройки для отдельных пользователей, пример:
пользователю test1 дадим полные права на каталог /home/vsftpd/test1
# mkdir -p /home/vsftpd/test1
# nano /etc/vsftpd/users/login1
local_root=/home/vsftpd/test1 anon_upload_enable=YES # разрешим аплоад anon_mkdir_write_enable=YES # разрешим создание и удаление каталогов в своем каталоге anon_other_write_enable=YES # разрешим удаление файлов chroot_local_user=YES # Не даём вылазить за пределы своего домашнего каталога
примечание:
Если эти
anon_upload_enable=NO
anon_mkdir_write_enable=NO
anon_other_write_enable=NO
параметры будут в таком виде - пользователь сможет ходить по указанной ему папке, но ничего кроме как скачать делать не сможет.
Заведение нового ftp юзера %user_name%:
# mkdir -p /home/vsftpd/user_name
# chown -R ftp:nogroup /home/vsftpd/
# cat >> /etc/vsftpd/logins.txt Enter user_name Enter Ctrl + D
# pwgen 10 -ncys1 | cat >> /etc/vsftpd/logins.txt
# /etc/vsftpd/useradd.sh
Удаление ftp юзера %user_name%:
удалить строку с %user_name% и следующую под ней
# nano /etc/vsftpd/logins.txt
# /etc/vsftpd/useradd.shесли в содержимом нет необходимости, то удалить /home/vsftpd/user_name
# rm -r /home/vsftpd/user_name
Просмотр БД
db4.8_dump -p users.db | less
примеры: cd /usr/share/doc/vsftpd/examples/VIRTUAL_USERS
man: http://www.opennet.ru/base/net/vsftpd_overview.txt.html
Здравствуйте
ОтветитьУдалитьКак изменить пароль уже существующему пользователю?
1. меняем пароль под нужным %user_name%
ОтветитьУдалить# nano /etc/vsftpd/logins.txt
2. запускаем скрипт для внесения пользователей
# /etc/vsftpd/useradd.sh
вижу что что статья 2011 года, но мало- ли ...
ОтветитьУдалитьстатья - то что мне нужно . Сделал всё по инструкции вроде работает . но мне очень нужно сделать пользователя у которого корневой папкой будет та в которой находятся папки всех остальных пользователей и у него будет полный доступ ко всем этим папкам (как минимум копирование удаление ) может кто-нибудь подскажет как это сделать ?