Назад | Перейти на главную страницу

Vsftpd аутентификация пользователя

Я установил виртуальную машину под управлением Centos 7 и VSFTPD.

VSFTPD отлично работает при подключении к локальным пользователям. Он привязывает пользователя к его ранее созданному дому в / ftp / pub / {имя_пользователя} с участием "useradd -d". Я добавил шифрование TLS, которое тоже отлично работает (отключено здесь, чтобы увидеть, что не так). Я установил контекст SElinux для / ftp к public_content_t ; /ftp/pub(/.*)? к public_content_rw_t и выставить 755 прав на / ftp / pub

Недавно я попытался добавить аутентификацию LDAP на сервер VSFTPD, выполнив следующие действия:

authconfig --enableldap --enableldapauth --ldapserver=name_of_my_server --ldapbasedn="dc=item1,dc=item2,dc=item3" --enablemkhomedir --update    

но он добавляет аутентификацию только для самого сервера (я могу использовать ssh для сервера с нелокальной учетной записью), а не для службы (vsftp), поэтому я столкнулся с:

500 OOPS: невозможно изменить каталог: / home / default / path

Из этой ошибки я понимаю, что он пытается войти в дом по умолчанию (который, очевидно, не существует), не создавая новый. Что я хочу сделать, так это когда нелокальный пользователь пытается подключиться к FTP на моем сервере, он создает ему новый дом в / ftp / pub / {user_name} и укоренить его в нем.

Вот pam.d / login:

#%PAM-1.0
auth [user_unknown=ignore success=ok ignore=ignore default=bad] pam_securetty.so
auth       substack     system-auth
auth       include      postlogin
account    required     pam_nologin.so
account    include      system-auth
password   include      system-auth
# pam_selinux.so close should be the first session rule
session    required     pam_selinux.so close
session    required     pam_loginuid.so
session    optional     pam_console.so
# pam_selinux.so open should only be followed by sessions to be executed in the user context
session    required     pam_selinux.so open
session    required     pam_namespace.so
session    optional     pam_keyinit.so force revoke
session    include      system-auth
session    include      postlogin
-session   optional     pam_ck_connector.so

pam.d / vsftpd:

#%PAM-1.0
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

vsftpd.conf:

anonymous_enable=NO
#Permet aux utilisateurs locaux de RW
local_enable=YES
write_enable=YES
local_umask=022
pasv_enable=YES
pasv_max_port=1026
pasv_min_port=1025
dirmessage_enable=YES
connect_from_port_20=YES
ascii_download_enable=YES
ascii_upload_enable=YES
ftpd_banner=Welcome to blah FTP service.

#Partie chroot
chroot_local_user=YES
allow_writeable_chroot=YES
local_root=/ftp/pub/$USER
user_sub_token=$USER
# (default follows)
#chroot_list_file=/etc/vsftpd/chroot_list

#logs
xferlog_enable=YES
xferlog_std_format=NO
log_ftp_protocol=YES

listen=YES
listen_ipv6=NO
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES

# Ajouts
use_localtime=YES
rsa_cert_file=/etc/ssl/private/vsftpd.pem
rsa_private_key_file=/etc/ssl/private/vsftpd.pem
require_ssl_reuse=NO
ssl_ciphers=HIGH
ssl_enable=NO
allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES
ssl_tlsv1=YES
ssl_sslv2=YES
ssl_sslv3=YES

Я действительно застрял на этом ldap auth для VSFTPD и не мог найти, что мне делать в других сообщениях о serverfault. Если бы кто-то мог мне помочь или порекомендовать документацию, я был бы очень признателен.

РЕДАКТИРОВАТЬ: Логин SSH успешно создает дом для пользователя по пути по умолчанию (/ home), логин FTP не создает его ни в / home, ни в / ftp / pub моя цель - создать дом для пользователя при входе по FTP в / ftp / pub

РЕДАКТИРОВАТЬ2: Как было предложено mxttie, я мог бы использовать pam_exec, но это было бы больше "обойти" проблему, не решая ее. Мне пришлось бы создать папку в «/ home», а затем папку в «/ ftp / pub» для каждого пользователя, который будет подключаться, чтобы решить два последовательных 500 УПС ошибки

Использовать pam_exec модуль для вызова скрипта, который выполняет необходимые команды (т.е. создает дом в / ftp / pub для нелокальных пользователей)