Gentoo Logo

Guida di aggiornamento a Linux-PAM 0.99

1.  Guida all'aggiornamento

Introduzione

Questa guida è stata scritta per aiutare gli utenti attraverso il processo di aggiornamento dalle vecchie versioni di Linux-PAM alla nuova versione basata sulle serie 0.99. Con la 0.99, Gentoo non usa più patch provenienti da RedHat/Fedora, e di conseguenza alcune funzionalità precedentemente supportate non sono più disponibili (d'altra parte, anche RedHat ha cessato di supportare e fornire alcune di queste funzionalità).

Per questo motivo, l'aggiornamento dal vecchio Linux-PAM al nuovo non è diretto, e potrebbe richiedere alcuni cambiamenti nella configurazione dell'autenticazione per il sistema o per i servizi se essa non è stata aggiornata automaticamente in precedenza. Inoltre alcuni moduli sono stati rimossi dal pacchetto sys-libs/pam e spostati in pacchetti a sé, per cui probabilmente si dovranno installarli se si fa affidamento alle funzionalità che essi mettono a disposizione.

Nota: Questa guida non deve intimorire: se il proprio sistema è stato installato all'incirca dopo Settembre 2005, il percorso di aggiornamento risulterà essere abbastanza indolore, e questo documento sarà solamente una lettura interessante. Se il proprio sistema è più vecchio, ma è stato aggiornato costantemente, e PAM non è stato configurato manualmente, dovrebbe andare bene lo stesso, in quanto la maggior parte dei file di configurazione saranno già stati aggiornati per conto dell'utente. Se la propria configurazione di PAM è stata personalizzata, probabilmente bisognerà aggiornarla manualmente, ma a questo punto si dovrebbero avere già le conoscenze su come gestire tale operazione.

Tenere presente che non ci sono perdite di funzionalità durante l'aggiornamento: la maggior parte delle patch RedHat sono attualmente implementate in Linux-PAM attraverso metodi leggermente diversi, per esempio la direttiva include che sostituisce il modulo deprecato pam_stack. I moduli sono stati spostati nei loro rispettivi pacchetti per mantenere il disegno pulito dell'ebuild, e per permettere ai pacchetti le cui configurazioni predefinite richiedono questi moduli opzionali di dipendere solamente da essi.

È importante mantenere aggiornato Linux-PAM, perché è un importante componente del sistema, in quanto è il fornitore predefinito dell'autenticazione per Gentoo Linux. Per questa ragione si consiglia di dare un'alta priorità all'aggiornamento a Linux-PAM 0.99 per mantenere il sistema sicuro e protetto.

Importante: Dopo aver aggiornato PAM, da una qualsiasi versione ad una qualsiasi versione, bisognerà riavviare quei servizi che lo staranno usando, per evitare discrepanze di ABI interne. Tali servizi includono sshd, vixie-cron (e probabilmente qualsiasi altro servizio cron), server mail, e generalmente tutti quei servizi che accettano utenze.

Quello che gli utenti dovranno fare nella maggior parte dei casi è o installare un nuovo pacchetto (perché il modulo è stato migrato al di fuori dell'ebuild principale sys-libs/pam), o cambiare la configurazione in modo da non utilizzare il modulo che è stato rimosso. Se l'utente ha effettuato delle modifiche ai file di configurazione del servizio PAM, dovrebbe essere capace a gestire tutti i cambiamenti necessari. Per quelli che non hanno mai modificato un file di configurazione, c'è un unico cambiamento che necessita di essere eseguito, documentato nella sezione pam_stack e la direttiva include

I cambiamenti devono essere applicati a ciascun file contenuto nella directory /etc/pam.d/ (i file di configurazione di PAM). Assicurarsi di rimuovere eventuali file di backup (*~) prima di provare ad aggiornare sys-libs/pam, o il processo di emerge fallirà come misura di sicurezza.

Come dispositivo di sicurezza, l'ebuild di sys-libs/pam controlla i file presenti in /etc/pam.d/ per individuare eventuali moduli ora deprecati, ed interrompe il processo di merge in caso essi siano ancora usati, per evitare di bloccare l'accesso dell'utente al proprio sistema. A causa della natura dei file di configurazione, è probabile che ci siano ancora vecchi file di configurazione per pacchetti già rimossi, per cui si dovrebbe prima verificare che non ci siano file orfani (file che non appartengono a nessun pacchetto), per esempio attraverso il comando qfile presente in app-portage/portage-utils.

Importante: Il controllo di sicurezza controlla inoltre le linee commentate, ciò significa che bisognerà rimuovere anche i commenti che fanno riferimento ai moduli rimossi. Questa cosa è pensata come una sicurezza aggiuntiva in modo che gli utenti non decommentino linee che successivamente inibiscano l'autenticazione nel proprio sistema. Se si vogliono mantenere i commenti come documentazione, si consiglia di spezzare i nomi dei moduli (per esempio in pam _stack.so).

Codice 1.1: usare qfile -o per verificare la presenza di file orfani

# qfile -o /etc/pam.d/*
/etc/pam.d/sshd
/etc/pam.d/system-auth~
/etc/pam.d/vmware-authd

La maggior parte delle volte la presenza di file orfani in /etc/pam.d è dovuta ai file di backup creati dai vari editor, i cui nomi terminano con un carattere tilde (~). I file rimanenti, a meno che non si abbia creato autonomamente una configurazione particolare, si dovrebbero poter rimuovere senza problemi (o almeno spostati da un'altra parte), in quanto probabilmente saranno rimasugli di pacchetti precedentemente installati. Un'eccezione speciale per questa situazione è il file /etc/pam.d/vmware-authd per vmware-server, che viene creato dallo script vmware-config.pl (ma la sua rimozione dovrebbe essere sicura a meno che non lo si abbia modificato manualmente, basta rieseguire lo script).

Quali sono i cambiamenti principali?

Come è stato detto in precedenza, il principale cambiamento tra la versione 0.78 e la 0.99 è che le patch RedHat non vengono più applicate, ma ciò non spiega cosa realmente cambia per gli utenti. Una prima differenza è che i seguenti moduli non sono più disponibili: pam_stack, pam_pwdb (ex flag USE pwdb), e pam_timestamp.

La flag USE pam_chroot non è più presente, in quanto il modulo (in precedenza proveniente dalle patch RedHat) non viene più creato in sys-libs/pam, ed è stato spostato in sys-auth/pam_chroot.

Inoltre, la flag USE berkdb, usata per creare il modulo pam_userdb, è stata rimossa; al suo posto si dovrà installare manualmente il pacchetto sys-auth/pam_userdb che fornisce il modulo con lo stesso nome. Inoltre la flag USE pam_console è stata rimossa, ed il relativo modulo non è più disponibile, si prega quindi di leggere la relativa sezione per ulteriori informazioni.

Per tutti moduli mancanti, a parte pam_stack, l'utente può chiedere senza problemi, tramite Bugzilla, informazioni riguardo al loro destino, fornendo dei casi di utilizzo degli stessi, e non è escluso che vengano resuscitati all'interno dei loro rispettivi pacchetti.

La questione a pam_console

Il modulo pam_console era stato progettato da RedHat per permettere l'impostazione di permessi differenti sulle periferiche per gli utenti che effettuavano il login tramite accesso hardware (o in X attraverso le varie applicazioni grafiche di login, o attraverso la login da console). Questo approccio ha causato più di qualche problema in passato, con il risultato di utenti che non riuscivano a far funzionare le proprie periferiche, ragione per cui questo modulo è stato disabilitato in modo predefinito, e la sua abilitazione/disabilitazione è stata collegata alla flag USE pam_console per quegli utenti che ne avessero bisogno.

Dalla versione 0.99 di Linux-PAM l'intero patchset di RedHat è stato rimosso, e pam_console non viene più fornito con il pacchetto. Sebbene sia disponibile ancora per un certo periodo di tempo tramite sys-auth/pam_console per chi ne avesse bisogno, un bug di sicurezza ha forzato il mascheramento e la rimozione di questo pacchetto.

La necessità di utilizzare pam_console è mitigata dalla migrazione di HAL all'utilizzo alternativo di ConsoleKit. Le persone che hanno ancora la necessità di un funzionamento simile a quello di pam_console sono invitati ad aggiornare il proprio codice in modo farlo funzionare con ConsoleKit, oppure usare il gruppo plugdev insieme al modulo pam_group.

Moduli spostati

Il modulo pam_userdb, usato per fornire l'autenticazione tramite un semplice file Berkley DB, era precedentemente disponibile attraverso la flag USE berkdb. Siccome questo modulo, per funzionare correttamente, richiede una copia statica in linea di Berkley DB, è stato spostato in un pacchetto a sé per semplificare la manutenzione di PAM, e ridurre il rischio di incappare in qualche problema. Il pacchetto è sys-auth/pam_userdb.

È importante notare che, sebbene il codice del modulo sia aggiornato, preso direttamente dall'ultimo rilascio di PAM, la copia di Berkley DB è ancora della versione 4.3; non è stato pianificato nessun aggiornamento, in quanto tali aggiornamenti solitamente non sono retrocompatibili. Per questo motivo, a meno che non venga trovato un bug di sicurezza, c'è ancora bisogno di usare gli strumenti di Berkely DB 4.3 per manipolare il database degli utenti.

Per gli utenti che hanno bisogno di questo modulo non è richiesto nient'altro che l'utilizzo di sys-auth/pam_userdb.

La stessa cosa vale per il modulo pam_chroot, ora disponibile tramite sys-auth/pam_chroot, per cui sarà sufficiente utilizzare questo nuovo pacchetto.

Anche il modulo pam_radius è stato spostato nel proprio pacchetto a sé, chiamato sys-auth/pam_radius, anche se non sia stato notato nulla nel momento della scrittura del documento riguardo alla compatibilità con la versione precedente che veniva fornita da Linux-PAM 0.99.

pam_stack e la direttiva include

PAM è stato progettato per permettere la configurazione di software e servizi diversi con diversi mezzi di autenticazione, per esempio accettando utenti locali attraverso i normali mezzi di autenticazione Unix, ma anche permettere l'autenticazione di utenti mail tramite un database. Per la maggior parte degli utenti desktop e per quei servizi che non si aspettano connessioni da utenti non di sistema (come i server HTTP), quasi tutti i servizi useranno semplicemente la medesima autenticazione rispetto al database di sistema delle password.

Per questa ragione, per evitare copie multiple dello stesso identico file di configurazione di PAM, molte distribuzioni Linux hanno cominciato a scrivere estensioni in modo da mantenere un singola configurazione system o meglio conosciuta come system-auth, e poi informare gli altri servizi di usarla per autenticarsi.

Fino alla versione 0.77, Linux-PAM in sé non forniva nessuna di queste estensioni, e il pacchetto di Gentoo seguiva la soluzione di RedHat tramite il modulo system-auth che dirottava le chiamate interne di PAM per andare a leggere un seconda configurazione alternativa del servizio. Questo metodo non era standard, non era portabile, e richiedeva una pesante modifica alla struttura interna della libreria.

Una soluzione alternativa è stata progettata invece da ALTLinux per OpenPam, ed era di usare una direttiva include, che doveva essere gestita internamente dalla implementazione di PAM, caricando in modo efficiente la configurazione per quel servizio e passare attaverso il modulo della classe equivalente. Questa è la medesima estensione implementata da Linux-Pam 0.78 in avanti, e l'unica opzione attualmente supportata da Gentoo (in quanto funziona su entrambe le implementazioni supportate).

Per convertire un vecchio file di configurazione che usa pam_stack in uno aggiornato che funziona con la direttiva include, basta sostituire le linee come mostrato:

Codice 1.2: Sostituire l'utilizzo di pam_stack con la direttiva include

(La vecchia configurazione)
auth    required     pam_stack.so    service=system-auth

(Sostituirla con questo)
auth    include      system-auth

Importante: Ci sono quattro servizi nella configurazione di PAM: auth, account, password e session. Bisogna aggiornare i file di configurazione per tutti questi servizi, non solo per auth.

Si prega di notare che probabilmente bisognerà anche riordinare le chiamate durante l'applicazione di questo cambiamento, in quanto alcune volte i moduli come pam_nologin sono elencati dopo pam_stack, benché ora essi necessitino di essere elencati prima della direttiva include.

Codice 1.3: Gestire moduli multipli con pam_stack

(Vecchio modo)
auth    required     pam_stack.so    service=system-auth
auth    required     pam_nologin.so

(Nuovo modo)
auth    required     pam_nologin.so
auth    include      system-auth

Questo cambiamento non porterà ad una perdita di funzionalità (pam_stack funziona solamente con la direttiva required), e dovrebbe essere sicuro in ogni caso. Tutte le configurazioni di PAM installate recentemente dagli ebuild contenuti nell'albero di Portage sono aggiornati per usare la nuova sintassi.



Stampa

Aggiornato il 2 luglio 2008

Oggetto: Questa guida aiuterà il lettore attraverso il percorso d'aggiornamento di Linux-PAM dalla versione 0.79 (o precedenti) alla 0.99

Diego Pettenò
Autore

Davide Cendron
Traduzione

Donate to support our development efforts.

Copyright 2001-2014 Gentoo Foundation, Inc. Questions, Comments? Contact us.