Настройка vsftpd для виртуальных пользователей
Рассматриваем случай настройки ftp-сервера для доступа от имени виртуальных (не системных) пользователей.
Нам потребуется несколько вещей.
- Авторизация виртуальных пользоватей
- "Посадка" каждого из этих пользователй в свой каталог
Для начала отключим нормальную авторизацию пользователей vsftpd и включим ту, которая нам нужна.
В файле настроек vsftpd по умолчанию присутствует такая строка:
pam_service_name=vsftpdИ по умолчанию в системе есть примерно такой файл /etc/pam.d/vsftpd
session optional pam_keyinit.so force revoke auth required pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed auth required pam_shells.so auth include password-auth account include password-auth session required pam_loginuid.so session include password-authне будем вдаваться в подробности, но нам он совсем не подходит. Меняем его содержимое на
auth required /lib64/security/pam_userdb.so crypt=none db=/etc/vsftpd/login account required /lib64/security/pam_userdb.so crypt=none db=/etc/vsftpd/login session required pam_loginuid.soи не забываем сохранить оригинальный файл, например как /etc/pam.d/vsftpd.orig (вдруг что пойдёт не так и захочется вернуть как было) В результате этих манипуляций авторизация пользователей будет происходить с помощью файла /etc/vsftpd/login.db. Для его подготовки создадим временный файл /etc/vsftpd/users.txt с данными о наших виртуальных пользователях:
user1 password1 username2 psqqword4user2 user3 pwd3где user1, username2, user3 имена наших виртуальных пользователей, а password1,psqqword4user2,pwd3 соответственно их пароли. Теперь для формирования файла /etc/vsftpd/login.db воспользуемя командой:
#> db_load -T -t hash -f ./users.txt ./login.db
Минимальный файл настроек /etc/vsftpd/vsftpd.conf:
# Отключим анонимных пользователей anonymous_enable=NO write_enable=YES local_enable=YES # укажем папку для хранения пользовательских конфигов. user_config_dir=/etc/vsftpd/users/ virtual_use_local_privs=YES guest_enable=YES # Default umask for local users is 077. You may wish to change this to 022, # if your users expect that (022 is used by most other ftpd's) local_umask=022 dirmessage_enable=YES connect_from_port_20=YES #local_root и guest_username не забываем указывать в пользовательских файлах конфигурации local_root=/var/www/sites guest_username=ftpuser chroot_local_user=YES allow_writeable_chroot=YES force_dot_files=YES listen=YES pam_service_name=vsftpd userlist_enable=NO userlist_deny=NO tcp_wrappers=YES
Осталось создать файлы пользовательских конфигураций:
#> echo "local_root=/var/www/sites/site1" > /etc/vsftpd/users/user1 #> echo "guest_username=apache" >> /etc/vsftpd/users/user1 #> echo "local_root=/var/log/mikrotik" > /etc/vsftpd/users/username2 #> echo "guest_username=loguser" >> /etc/vsftpd/users/username2Ну и
#> systemctl restart vsftpd