PAM: eseguire un comando prima di pam_mkhomedir?


8

Quando un utente accede a un sistema e non esiste una home directory, vorremmo creare la home directory dell'utente usando pam_mkhomedir . Questa è una pratica comune. Ecco una breve descrizione di pam_mkhomedir:

Il modulo PAM pam_mkhomedir creerà una home directory degli utenti se non esiste quando inizia la sessione. Ciò consente agli utenti di essere presenti nel database centrale (come NIS, Kerberos o LDAP) senza utilizzare un file system distribuito o pre-creare un gran numero di directory. La directory skeleton (di solito / etc / skel /) viene utilizzata per copiare i file predefiniti e imposta anche un umask per la creazione.

Tuttavia, questo è un sistema FreeBSD 8.2 che esegue ZFS. Dobbiamo prima eseguire un comando ZFS, perché vogliamo un file system ZFS per utente . pam_mkhomedirpuò fare un mkdir, ma dobbiamo fare qualcosa del genere zfs create /zpool/home/$USER.

Qualcuno sa se è possibile utilizzare PAM per eseguire comandi durante la prima sessione di accesso di un utente?


Ho sostituito il link solarisinternals.com con una versione archiviata di archive.org, perché la prima è occupata da un abusivo di domini. Grazie a @Norman Grey per averlo segnalato.
Stefan Lasiewski,

Risposte:


9

Esiste un modulo PAM chiamato pam_exec: se si scrive uno script che verifica e / o crea il volume ZFS, è possibile collegarlo alle regole PAM esistenti e mantenere le cose belle senza assumere accesso interattivo, shell predefinite e directory skeleton, ecc. esempio, potresti avere

session required pam_unix.so
session required pam_exec.so check_zfs.sh $PAM_USER

o qualunque cosa si adatti alla tua configurazione specifica.

(Come ha sottolineato Tom Shaw nei commenti, session required pam_mkhomedir.sosarebbe ridondante.)


Buono tranne che hai un refuso nella riga pam_mkhomedir.so - i refusi in pam.conf non sono buoni! - e non penso che quella riga sia necessaria comunque se lo script check_zfs.sh fa tutto il lavoro sporco.
Tom Shaw,

@Tom Perché reinventare la ruota quando il modulo PAM lo fa per te?
Andrew,

2
Il punto della domanda è che vuole che la directory home sia creata con "zfs create" piuttosto che "mkdir". Questo si ottiene usando pam_exec. La directory esiste a questo punto, quindi il successivo pam_mkhomedir non farà nulla!
Tom Shaw,

@TomShaw davvero.
Andrew,

3

Vale la pena sottolineare, come chiesto, la tua domanda contiene un presupposto non valido: anche PAM non ha idea se si tratta del primo accesso dell'utente; sa solo se l'utente ha una home directory o meno.

Quindi, con questo avvertimento in mente, non è PAM a farlo, ma potresti facilmente eseguire qualcosa /etc/bashrc, con il comando preceduto da un controllo per, e seguito da una goccia di, un dotfile nella home directory dell'utente. Hai bisogno di privilegi di root? O un sudobinario opportunamente bloccato , o un binario setuid, probabilmente funzionerà meglio per te. Entrambe le opzioni ti danno anche la possibilità di mettere il dotfile in un posto dove l'utente non può modificarlo o eliminarlo (se ti interessa quel genere di cose).


Non ho capito bene. Pam_mkhomedir non sta creando queste home directory, copiando il contenuto di / etc / skel, ecc? Ho dato un'occhiata al codice C (su FreeBSD) e ho pensato di poter vedere dove copia i file scheletro sull'omedir appena creato.
Stefan Lasiewski,

Solo perché un utente non ha una home directory non significa che non abbia effettuato prima l'accesso a quel sistema. La home directory potrebbe essere stata eliminata, ad esempio. Tuttavia, questo è per lo più capelli semantici e di divisione.
Red Tux,

@red: capito. Ho aggiornato la mia domanda.
Stefan Lasiewski,

1

Quindi hai due scelte qui:

1) modificare l'origine di pam_mkhomedir per creare il file system zfs prima di creare la directory. 2) lascia che pam_mkhomedir venga eseguito normalmente, quindi aggiungi uno script per controllare e vedere quando ci sono cartelle non sul proprio file system zfs in cui l'utente si è disconnesso. Quando si rilevano questi casi, spostare la directory / home, creare il file system, quindi spostare nuovamente i file nella directory.

Sospetto che lasciare un utente sul main / home per un primo giorno non causi troppi problemi, quindi sceglierei quest'ultima opzione, la sua più semplice.

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.