vsftpd - PAM - MySQL e pam_mkhomedir per creare directory


11

Ho usato con successo vsftpd con utenti virtuali che si connettono con PAM al mio database mysql. Ora vorrei automatizzare la creazione di directory utente con una connessione vsftpd riuscita.

Ecco la configurazione /etc/pam.d/vsftpd:

#%PAM-1.0
session    optional     pam_keyinit.so    force revoke
auth required pam_mysql.so verbose=1 user=root passwd=mypass host=localhost db=mydb table=mytable usercolumn=username passwdcolumn=password crypt=3
account required pam_mysql.so verbose=1 user=root passwd=mypass host=localhost db=mydb table=mytable usercolumn=username passwdcolumn=password crypt=3
session required pam_mkhomedir.so skel=/home/skel/ umask=0022 debug

L'aggiunta di pam_mkhomedir ora mostra solo che non è possibile creare la directory senza altri messaggi in alcun registro. Quindi ovviamente non si applica. C'è qualcos'altro di cui ho bisogno?

Il mio /etc/vsftpd/vsftpd.conf:

# No ANONYMOUS users allowed
anonymous_enable=NO
# Allow 'local' users with WRITE permissions (0755)
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=NO
xferlog_enable=YES
connect_from_port_20=YES

# define a unique user on your system which the
# ftp server can use as a totally isolated and unprivileged user.
nopriv_user=vsftpd
chroot_local_user=YES
listen=YES

# here we use the authentication module for vsftpd to check users name and passw
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
userlist_deny=YES
# here the vsftpd will allow the 'vsftpd' user to login into '/home/vsftpd/$USER directory
guest_enable=YES
guest_username=vsftpd
local_root=/home/vsftpd/$USER
user_sub_token=$USER
virtual_use_local_privs=YES
download_enable=NO

force_local_data_ssl=NO
force_local_logins_ssl=NO

# PASV - passive ports for FTP 
pasv_enable=YES
pasv_min_port=14000
pasv_max_port=14100

Ho visto un post che diceva che avevo bisogno di questo nel mio vsftpd.conf, quindi ho provato anche questo:

session_support=YES

Ma ora non sembra più autenticarsi come mostrano i registri:

Mar 24 00:46:16 ip-10-212-239-40 vsftpd[1962]: pam_keyinit(vsftpd:session): Unable to look up user "user1"
Mar 24 00:46:16 ip-10-212-239-40 vsftpd[1962]: pam_mkhomedir(vsftpd:session): User unknown.

Questo anche se ho già creato la directory. Ora nessuno può entrare.

Qualche idea?


Ciao, sei mai stato in grado di risolvere questo problema?
George,

@George Niente affatto.
Tom,

Ho risolto il problema in un modo molto diverso, mi sono allontanato da vsftpd e sono andato con pureftp. Installazione e funzionamento in un paio d'ore senza tutti questi problemi. Funziona perfettamente.
George,

è / home / vsftpd di proprietà di vsftpd?
Luca Gibelli,

Risposte:


0

Affinché le ricerche utente per modulo PAM abbiano esito positivo, è necessario abilitare il modulo NSS per MySQL in nsswitch.conf(5). nss_mysqlÈ tuo amico.


Qualche riferimento che puoi fornire su questo? Non riesco a trovare nulla sul bisogno nss-mysqlnel mio contesto?
Tom

Come pam_mkhomedircapire il percorso della home directory dell'utente che dovrebbe creare? Come fa a sapere quale database utilizzare per risolvere l'utente? NSS fornisce tali informazioni. Nel tuo caso, avrai bisogno di nss_mysql , supponendo che il tuo database utente sia archiviato in un database MySQL.
Ashish SHUKLA,

Sto solo cercando di scoprire qualcosa su questa biblioteca. Il link che hai fornito è un progetto molto vecchio senza documentazione. Se lo installo non fornisce indicazioni su cosa inserire nel tuo nssswitch.conf. Solo che può contenere 3 parametri. Potete fornire qualsiasi tipo di guida? Sembra che pam_mysql sia la stessa cosa di nss-mysql? Ho pam_mysql funzionante dove utilizza il mysql db per autenticarsi con utenti virtuali vsftpd.
Tom

PAM non è uguale a NSS . PAM è mirato all'autenticazione, mentre l'obiettivo di NSS è risolvere i nomi (nomi host, nomi utente, ecc.). La maggior parte delle distribuzioni forniscono un pacchetto per nss_mysql, ad esempio Debian e derivati ​​lo forniscono come libnss-mysql. E sì, non viene aggiornato per mezzo decennio, ma funziona benissimo. Una volta installato il modulo, configurato e aggiunto al tuo nsswitch.conf(5), le cose inizieranno a funzionare per te.
Ashish SHUKLA,

Ho aggiunto libnss-mysql dalla mia distribuzione. Provato fuori dalla scatola e niente funziona. Qualche idea su cosa devo cambiare in nsswitch.conf?
Tom

0

Puoi provare a usare pam_script- è un modulo pam che consente di eseguire script shell arbitrari dopo l'apertura di una sessione utente (tra gli altri).

Puoi trovare pam_scriptqui: https://github.com/jeroennijhof/pam_script . Dovrebbe anche essere installabile tramite i gestori dei pacchetti, almeno sono stato in grado di installarlo tramite apt-get.

Fai attenzione, poiché vsftpd sembra avere dei problemi con pam_script almeno quando nega l'autenticazione, vedi la mia domanda irrisolta: vsftpd si blocca dopo un'autenticazione pam_script fallita . Tuttavia nel tuo caso non dovrebbe essere un problema.


0

La risposta breve è che stai mescolando le credenziali di sistema e di servizio e non dovresti (non puoi?) Usare pam_mkhomedir con utenti virtuali in vsftpd.

pam_mkhomedir è per la creazione di directory locali dell'utente e presuppone che l'utente sia definito nel sistema. Gli utenti virtuali in vsftpd non sono utenti di sistema (in base alla progettazione) e come tali non hanno privilegi al di fuori del servizio vsftpd (il sistema non è a conoscenza di tali utenti). L'uso di PAM per l'autenticazione comporta solo la convalida delle credenziali dell'utente (nome utente + password ==> OK). Questo può essere fonte di confusione quando si usano utenti virtuali, poiché vsftpd può anche essere configurato per usare gli utenti di sistema con PAM.

Quando si crea la home directory per un utente virtuale , è necessario impostare l'account / gruppo del servizio vsftpd come proprietario della cartella e posizionare la "directory home virtuale" nel percorso del servizio vsftpd, con permessi appropriati per il servizio vsftpd. Non sono sicuro del problema che si sta tentando di risolvere, ma poiché si sta eseguendo il chroot della sessione utente, presumo che si stia tentando di creare un certo isolamento tra gli utenti. Dal momento che è necessario creare l'utente virtuale nel database degli utenti affinché possano accedere, perché non generare contemporaneamente la home directory? Ho fatto questo usando uno script per aggiungere / modificare / eliminare l'utente per mantenere coerenti il ​​database degli utenti virtuali e le cartelle home virtuali dell'utente vsftpd. YMMV.

Ricorda, con gli utenti virtuali, lavori solo all'interno di vsftpd e non nel sistema.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.