Eu configurei uma máquina virtual executando o Centos 7 e o VSFTPD.
O VSFTPD está funcionando muito bem ao se conectar com usuários locais. Ele faz o chroot do usuário em sua casa criada anteriormente em / ftp / pub / {user_name} com "useradd -d" . Eu adicionei criptografia TLS que está funcionando muito bem (desativado aqui para ver o que estava errado). Eu configurei o contexto do SElinux de / ftp para public_content_t ; / ftp / pub (/.*)? para public_content_rw_t e defina os direitos 755 em / ftp / pub
Recentemente, tentei adicionar a autenticação LDAP ao servidor VSFTPD fazendo isso:
authconfig --enableldap --enableldapauth --ldapserver=name_of_my_server --ldapbasedn="dc=item1,dc=item2,dc=item3" --enablemkhomedir --update
mas só adiciona autenticação ao próprio servidor (eu posso ssh para o servidor com uma conta não local), não para o serviço (vsftp), então eu vim em um:
500 OOPS: cannot change directory:/home/default/path
O que eu entendo deste erro é que ele tenta fazer o login na casa padrão (que obviamente não existe) sem criar um novo. O que eu quero fazer é quando um usuário não local tenta FTP no meu servidor, ele cria uma nova casa em / ftp / pub / {user_name} e chroot nele.
Aqui está 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
Estou realmente preso nessa autenticação do ldap para o VSFTPD e não consegui encontrar o que devo fazer em outros posts no serverfault. Se alguém pudesse me ajudar ou recomendar documentação, seria muito apreciado.
EDIT : o SSH login cria com sucesso uma casa para o usuário no caminho padrão (/ home), o login no FTP não o cria em / home, nem no / ftp / pub meu objetivo é criar uma casa para o usuário no login do FTP em / ftp / pub
EDIT2 : Como sugerido por mxttie, eu poderia usar o pam_exec, mas seria mais "contornar" o problema sem realmente resolvê-lo. Eu teria que criar uma pasta em "/ home", depois uma pasta em "/ ftp / pub" para cada usuário que se conectaria para resolver os dois erros 500 OOPS consecutivos