Benvenuti nella pagina Wiki di Simone Giustetti.
Lingue: English - Italiano
Introduzione
Qualsiasi sistema operativo una volta installato necessita di manutenzione ed aggiornamenti... Linux e Slackware non sono da meno. Con il passare del tempo possono essere scoperte nuove vulnerabilità oppure nuovi errori che affliggono i programmi installati. Mentre alcuni errori possono rappresentare nulla più di un fastidio, i problemi di sicurezza possono esporre gli utenti del sistema a rischi peggiori quali il furto di dati sensibili, il furto di identità o peggio ancora. Slackware rilascia abitualmente versioni aggiornate dei pacchetti per risolvere facilmente ogni problema mantenendo il sistema in salute e gli utenti al sicuro. I pacchetti con correzioni sono disponibili on-line, sul sito della distribuzione, nella directory /patches specifica per la versione installata. Per verificare l'esistenza di tali pacchetti è possibile consultare la Security Mailing List di Slackware oppure visionare una copia aggiornata del file Changelog.txt. In ogni segnalazione sono riportati: una descrizione dei problemi riscontrati e risolti ed informazioni utili circa la procedura di installazione dell'aggiornamento.
Una volta accertata la disponibilità di aggiornamenti esistono svariati modi per installarli su di un sistema attivo. Alcuni richiedono un notevole dispendio di tempo mentre altri possono essere quasi completamente automatizzati grazie all'aiuto del demone cron, dei comandi di shell e di altri strumenti offerti dalla distribuzione. Per quanto non sia consigliabile automatizzare completamente una procedura di aggiornamento del sistema operativo, esistono alcuni scenari in cui tale operazione è vantaggiosa e consente un notevole risparmio di energie e risorse. Nel proseguo dell'articolo verranno esposte alcune potenziali metodologie di aggiornamento.
Lo Scenario
Si immagini di avere uno o più sistemi adibiti alla compilazione automatica programmata di codice sorgente. Scopo dei sistemi consiste nell'eseguire tutte le operazioni di compilazione e successiva pacchettizzazione del software. Le macchine faranno girare autonomamente le procedure che si occupano di preparare ed eventualmente testare i pacchetti, salvando gli esiti delle operazioni in appositi file di log. L'interazione umana con simili sitemi è minima: si limita alla configurazione iniziale e all'analisi dei file di log alla ricerca di eventuali errori. Il software compilato conterrà sicuramente parti di codice di librerie esterne e potrebbe dover interagire con altri programmi. È necessario mantenere gli ambienti aggiornati in modo da evitare l'inclusione involontaria di errori presenti nel codice condiviso e per eseguire test con versioni attuali di programmi esterni. Gli ambienti di sviluppo rappresentano uno scenario ideale per una procedura di aggiornamento automatizzata.
Installazione delle Patch
Come precedentemente affermato: esistono molti modi per aggiornare un sistema operativo Slackware Linux. Il più semplice ed intuitivo consiste nello scaricare i pacchetti dagli URL riportati nelle segnalazioni di sicurezza, in ogni voce oltre alla descrizione del problema sono inclusi i link per tutte le versioni di Slackware attivamente supportate, quindi utilizzare il comando upgradepkg. Upgradepkg è un comando appartenente al pacchetto pkgtools che si occupa di installare un pacchetto sovrascrivendone una precedente versione. Per far ciò il comando prima installa la versione più recente quindi procede a rimuovere tutti i file della vecchia non inclusi nella nuova. La procedura esposta richiede ovviamente molto lavoro da parte dell'amministratore di sistema: lavoro che potrebbe ridursi notevolmente facendo ricorso ad un gestore di pacchetti.
slackpkg
Slackpkg è il gestore di pacchetti predefinito di Slackware Linux ed offre molte funzionalità comuni agli strumenti adottati da altre distribuzioni come yum, per le distribuzioni derivate da Red Hat, o apt, per quelle derivate da Debian. Slackpkg consente di aggiornare via rete singoli pacchetti oppure l'intero sistema, installare o rimuovere pacchetti, ottenere informazioni circa un pacchetto e molto altro ancora. Per poter utilizzare slackpkg sarà necessario:
- Installare il programma se non fosse presente nel sistema.
- Modificare secondo le proprie esigenze le opzioni contenute nel file di configurazione: /etc/slackpkg/slackpkg.conf.
- Abilitare uno ed uno solo tra i mirror presenti nell'elenco in /etc/slackpkg/mirrors. Si consiglia di sceglierne uno veloce e geograficamente vicino al proprio paese.
- Procedere alla prima configurazione dello strumento:
- Lanciare il comando
slackpkg update gpg
- per aggiornare il file contenente la firma digitale del progetto Slackware. Tale firma servirà per certificare la provenienza dei pacchetti scaricati ed installati. Procedere quindi ad aggiornare l'elenco dei pacchetti disponibili lanciando il comando
slackpkg update
- Il gestore di pacchetti sarà quindi pronto per l'uso.
Per verificare periodicamente la presenza di nuovi aggiornamenti sarà sufficiente lanciare il comando:
slackpkg update
Per eseguire l'aggiornamento di un intero sistema sarà possibile far ricorso al comando:
slackpkg upgrade-all
che, dopo aver verificato l'esistenza di pacchetti aggiornati, li scaricherà localmente e avvierà il programma upgradepkg citato in precedenza. All'utente verrà richiesta una conferma come mostrato nella figura sottostante.
A conferma avvenuta l'aggiornamento procederà senza ulteriori indugi. Al termine dell'operazione slackpkg mostrerà un elenco contenente i nuovi file di configurazione installati. Sarà compito dell'amministratore di sistema aggiornare i file sostituendone le versioni precedenti ed eseguire eventuali operazioni di configurazione specifiche come lanciare lilo dopo aver aggiornato il kernel.
Aggiornamento Tramite Script
Sebbene slackpkg rappresenti uno strumento molto comodo per l'amministratore di sistema, non è ancora la soluzione ricercata in quanto richiede una interazione umana per operare efficacemente. Lo scopo perseguito consiste nell'aggiornare in maniera totalmente automatica i pacchetti di un sistema Slackware Linux adibito alla compilazione di software. Prendendo spunto dalla documentazione ufficiale ci si è mossi nella direzione di uno script di shell che potesse essere eseguito periodicamente attraverso il demone cron. Le caratteristiche dello script sono:
- Semplicità.
- Necessità di sfruttare per quanto possibile gli strumenti standard offerti dalla distribuzione.
- Necessità di produrre poco o nessun output e di salvare quante più informazioni possibili in un file di log.
- Esigenza di scartare alcuni pacchetti per cui sia necessario un intervento umano: Il kernel ad esempio.
Per verificare l'esistenza di patch lo script analizzerà il contenuto di una copia aggiornata del file Changelog.txt sfruttando rsync_slackware_patches.sh: uno script istituzionale pensato per tale compito. Più in dettaglio lo script dovrà
- Scaricare una versione aggiornata di rsync_slackware_patches.sh in locale.
- Eseguire lo script in modo da scaricare localmente i pacchetti aggiornati presenti nella directory /patches della versione di Slackware installata.
- Determinare quali pacchetti necessitino di aggiornamento.
- Verificare la firma dei pacchetti in modo da accertarne l'origine.
- Installare i pacchetti fermando l'operazione solo nel caso si presentino errori.
- Salvare un resoconto di tutte le operazioni in un file di log per future consultazioni.
Uno esempio di script in grado di eseguire quanto richiesto più sopra può essere scaricato dal seguente link.
Per programmare l'esecuzione periodica dello script sarà necessario modificare il crontab dell'utente root mediante il comando:
crontab -e
aggiungendo una riga simile a
01 00 * * * /usr/bin/bash /usr/local/bin/patch_install.sh 1> /dev/null
tramite cui cron eseguirà lo script una volta al giorno un minuto dopo la mezzanotte.
Conclusioni
Sono stati descritti diversi metodi per eseguire l'installazione di patch su di un sistema Slackware Linux in maniera manuale o automatica. È stato presentato uno script che, combinato con il demone cron, consente di eseguire l'aggiornamento periodico automatico di un ambiente di sviluppo e test. Non si tratta ovviamente di una soluzione ottimale, ma di un punto di partenza che, opportunamente ampliato ed integrato, potrà facilmente adattarsi alle proprie esigenze specifiche.
Per commenti, consigli, domande inviate una e-mail all'indirizzo studiosg [chiocciola] giustetti [punto] net.
Link esterni
- Slackware home page
- Slackware Documentation Project (In inglese)
- Slackware mailing list inerente la sicurezza (In inglese)
Lingue: English - Italiano