Hai ragione:/etc/passwd
e /etc/shadow
sono consultati da pam_unix.so
, che fanno parte di PAM. Almeno sui moderni Linux. Puoi cambiarlo applicando una patch a pam_unix.so
. Se si deve credere alla manpage, non è possibile modificare la posizione dei database di sistema.
E davvero non vuoi. /etc/passwd
non è usato solo per l'autenticazione, è anche usato per la risoluzione dei nomi (inversa) e per cercare cose come il nome completo dell'utente, shell, eccetera. Il nome e la posizione sono così standardizzati che spostarli quasi sicuramente romperebbe le cose al di fuori del solo PAM. Dovresti applicare patch molto più di quanto ti aspettavi.
Aggiornamento: Se stai cercando di nascondere il /etc/{passwd,shadow,group}
file per sicurezza, non preoccuparti. La sicurezza per oscurità raramente aiuta come politica. Lasciali dove sono e inasprisci il resto delle tue politiche.
Aggiornamento:una possibile soluzione
Se disponi di un software personalizzato necessario per accedere a un insieme diverso di database di utenti/gruppi, puoi fare una copia dei relativi moduli PAM e NSS e correggerli per utilizzare i tuoi database personalizzati. I database unix originali rimangono dove sono in modo che il software non venga confuso, ma puoi impostare PAM e NSS in modo che utilizzino i tuoi moduli personalizzati ovunque sia necessario e utilizzando qualsiasi politica abbia senso per te.
Mantieni i database unix essenzialmente incontaminati e avrai ciò che hai chiesto. Questo è praticamente ciò che il radius
e ldap
I moduli PAM/NSS sì:forniscono un ulteriore (non sostituzione) fonte di credenziali e informazioni su utenti/gruppi.
Facendo un ulteriore passo avanti:puoi tornare a PAM e NSS e disabilitare del tutto le ricerche nel database unix. Lascia i file lì per il vecchio software (naturalmente, le loro visualizzazioni dei database di utenti/gruppi saranno imprecise, ma almeno non si romperanno).
Quello che stai cercando è pam_pwdfile
modulo. Su Debian/Ubuntu il pacchetto è libpam-pwdfile
(non sono sicuro delle distribuzioni derivate da RedHat).
Il README
incluso nella confezione spiega come usarlo.
Non sono sicuro che sia possibile fuori dagli schemi, ma è sicuramente possibile con un po' di hacking. Per fare ciò dovrai:
- Tune/hack libreria nsswitch (/lib/libnss_files.so o libnss_db.so - controlla il tuo /etc/nsswitch.conf) in modo che legga qualche altro file.
- Ottimizza/hack il modulo pam_unix in modo che legga altri file.