Attualmente sto costruendo un sistema di autenticazione usando Linux PAM per un processo demone python. Dovrà autenticare gli utenti remoti da una varietà di front-end rispetto all'elenco utenti locale. (Tra le altre opzioni, ma con quelle che non ho problemi con) Sarà usato come sistema di gestione e configurazione centralizzato.
Tuttavia, dato che è un po 'folle da un punto di vista della sicurezza, per eseguire il daemon come root, ho cercato alternative.
Le opzioni che ho trovato erano:
- Creazione di un gruppo con accesso in lettura al file
/etc/shadow
e aggiunta dell'utente del daemon al gruppo. (Uno svantaggio aggiuntivo, inoltre, richiede l'accesso in scrittura se è necessario aggiornare le credenziali dell'utente. Ciò potrebbe tornare al problema di root iniziale.) - Richiamo di una shell dal daemon e uso
su
per passare temporaneamente a root / utente specificato prima di autenticarsi. (Un esempio includeva faresu [username]
che significherebbe che tu sei autenticato se la chiamata ha successo.) - Creazione di un processo separato che esegue solo l'autenticazione in root e viene comunicato con i socket di dominio UNIX. (Questo attualmente ha la mia preferenza in quanto gli altri due sembrano più simili a soluzioni alternative agli hacky.)
Ho la fastidiosa sensazione che mi manca una soluzione ovvia, ma non ho idea di cosa sarebbe. Se questo non è il caso che sarebbe preferibile da un punto di vista della sicurezza. Quello che ho trovato è stato diviso tra le varie opzioni senza approfondire i trade-off o il modo in cui si confronta con le altre opzioni. A causa della natura delle applicazioni che gestirà, la sicurezza è la massima priorità in relazione a qualsiasi soluzione.