[LatinaLUG] Re: [Lati naLUG] perchè kppp vuole root password

Gabriele Mambrini latina@lists.linux.it
Mon, 28 Jan 2002 09:47:48 +0100


> allora in /etc/pam.d/kppp c'è
> auth sufficient /lib/security/pam_rootok.so
> auth required /lib/security/pam_stack.so service=system-auth
> session optional /lib/security/pam_xauth.so
> account required /lib/security/pam_permit.so
> 
> chiadendo le proprietà di /usr/bin/kppp ottengo che è:tipo eseguibile; punta
> a:consolehelper
> (suppongo che sia un symlink (che suppongo significhi link simbolico) a
> consolehelper)
> permessi U:rwx  G:r_x O:r_x   utente=root gruppo=root

La soluzione veloce dovrebbe essere questa:
-----
#auth sufficient /lib/security/pam_rootok.so
#auth required /lib/security/pam_stack.so service=system-auth
auth    required  pam_permit.so
session optional /lib/security/pam_xauth.so
account required /lib/security/pam_permit.so
-----
 
kppp effettua operazioni che richiedono root, per renderlo usabile da
ogni utente in genere lo si installa come eseguibile setuid (chmod u+s)
in modo che viene eseguito con l'uid del proprietario anziché quello di
chi lo lancia. Siccome non è bello che chiunque possa lanciare un
programma suid (un utente maligno potrebbe causare un buffer overflow
per poi fargli eseguire del proprio codice come ad esempio aprire una shell
di root) una soluzione è quella di lasciare il programma senza suid e
far passare l'utente per consolehelper (che è suid root), che a sua
volta usa userhelper ed infine lancia il kppp vero che sta in
probabilmente in /usr/sbin oppure /usr/bin/kppp.real
consolehelper è quello che ti apre la finestrella della password di
root.

Questo giro consente di utilizzare i moduli pam per stabilire la
politica di sistema che è definita in /etc/pam.d/<programma> o in
/etc/pam. Nel tuo caso si è auth-orizzati a eseguire kppp se si è root
(pam_rootok.so) oppure se si soddisfa system-auth (pam_stack.... è come
a dire include /etc/pam.d/system-auth) queste due righe le commentiamo e
mettiamo invece pam_permit che fa passare tutti.

PAM è molto flessibile, ad esempio aggiungendo un  

auth    required    /usr/lib/security/pam_listfile.so \
             	   	onerr=fail item=user sense=allow file=/etc/kppp-users

si definisce una lista di chi può fare kppp, ci sono moduli come
pam_ldap per leggere gli utenti da un db ldap oltre che da /etc/passwd
oppure pam_console per restringere l'uso di un programma (tipo shutdown)
a chi è loggato sulla console.

ciao, 
Gabriele