Dimensione: 8649
Commento: Piccola precisazione
|
Dimensione: 8810
Commento: + link AmministrazioneSistema/PermessiFile
|
Le cancellazioni sono segnalate in questo modo. | Le aggiunte sono segnalate in questo modo. |
Linea 78: | Linea 78: |
Per maggiori informazioni sul sistema di proprietà, accesso ed esecuzione dei file in Ubuntu consultare questa [[AmministrazioneSistema/PermessiFile|guida]]. |
Guida verificata con Ubuntu: 22.04
Problemi in questa pagina? Segnalali in questa discussione
Introduzione
A partire dal rilascio Ubuntu 22.04 potrebbero comparire messaggi di avvertimento simili ai seguenti:
Warning: apt-key is deprecated. Manage keyring files in trusted.gpg.d instead (see apt-key(8)).
Key is stored in legacy trusted.gpg keyring (/etc/apt/trusted.gpg), see the DEPRECATION section in apt-key(8) for details.
contestualmente o in seguito all'installazione della chiave di autenticazione di un repository di terze parti, oppure quando l'installazione di programmi esterni tramite file .deb comporta l'aggiunta automatica dei loro repository.
Ciò è causato dall'utilizzo dello strumento apt-key, usato per caricare le chiavi di autenticazione dei repository di terze parti, che però è stato deprecato a favore di una procedura ritenuta più sicura.
Questa guida spiega le procedure, tramite comandi eseguiti nel terminale, per aggiungere e gestire repository e chiavi di autenticazione di terze parti, valide per Ubuntu 22.04 (ultima versione in cui sarà presente apt-key) e successive.
Tutte le procedure descritte di seguito utilizzano nomi generici quali esempio.com per il repository, esempio-keyring.gpg per la chiave, ecc.
Sostituire gli indirizzi e i nomi dei file indicati con quelli effettivi.
Queste procedure non sono necessarie con i PPA (Repository Launchpad).
Motivi del cambiamento
In conformità alla Policy di Debian, è richiesto che ogni repository di terze parti venga autenticato con una chiave di autenticazione OpenPGP, evitando quindi di usare il formato Ascii-armored, e di utilizzare per il collegamento il protocollo HTTPS (più sicuro nei confronti di attacchi MITM).
Inoltre apt-key, in aderenza alle funzionalità di apt, alloca le chiavi di autenticazione dei repository di terze parti in /etc/apt/trusted.gpg e/o /etc/apt/trusted.gpg.d. Queste posizioni però sono ritenute sempre sicure da apt. Ne consegue che un repository di terze parti può installare o aggiornare qualsiasi pacchetto, non soltanto i pacchetti contenuti nel repository stesso. Ciò comporta evidenti rischi, in quanto un repository esterno potrebbe virtualmente anche sostituire qualsiasi pacchetto presente nel sistema.
Pertanto apt-key potrebbe esporre il sistema a potenziali violazioni della sicurezza. Da qui la decisione di separare la gestione e l'allocazione delle chiavi di autenticazione.
Gestione delle chiavi
Installazione con apt-key (deprecata)
Le seguenti istruzioni vengono riportate al solo scopo di mostrare le differenze con la procedura più recente.
Per importare la chiave di autenticazione dei pacchetti del repository, è usata la stringa:
wget -qO - https://esempio.com/esempio-keyring.gpg | sudo apt-key add -
Il comando salva la chiave di autenticazione nel file /etc/apt/trusted.gpg o nella cartella /etc/apt/trusted.gpg.d.
Per installare il repository dei pacchetti è usata la stringa:
echo "deb https://esempio.com/ all main" | sudo tee /etc/apt/sources.list.d/esempio.list
Con questo comando l'indirizzo del repository viene semplicemente copiato in un file omonimo allocato nella cartella /etc/apt/sources.list.d/.
Installazione diretta del file gpg
Per importare la chiave di autenticazione del repository, è usata la stringa:
wget -qO - https://esempio.com/esempio-keyring.gpg | gpg --dearmor | sudo tee /etc/apt/keyrings/esempio-keyring.gpg -
La pipe intermedia «| gpg --dearmor |» serve per convertire una chiave di autenticazione eventualmente distribuita dal formato .asc (Ascii-armored) al formato .gpg (GNU Privacy Guard). Se la chiave è già nel formato .gpg, il comando viene ignorato. Viene infine specificata la cartella /etc/apt/keyrings/, posizione dove viene salvata la chiave.
La Policy Debian suggerisce di allocare le chiavi di autenticazione nella cartella /usr/share/keyrings. A partire dalla versione 2.4.0 di apt viene fornita come destinazione /etc/apt/keyrings per le chiavi gestite in locale. In alternativa possono essere scelte anche posizioni personali, come ad esempio /usr/local/share/keyrings o altre.
Per importare il repository dei pacchetti, è usata la stringa:
echo "deb [signed-by=/etc/apt/keyrings/esempio-keyring.gpg] https://esempio.com/ all main" | sudo tee /etc/apt/sources.list.d/esempio.list
dove viene aggiunta l'opzione signed-by= (racchiusa tra parentesi quadre) che serve ad indicare il percorso dove viene salvata la chiave di autenticazione del repository (selezionata nel comando precedente).
Se già presenti delle parentesi quadre con indicata un'altra opzione (ad esempio [arch=amd64]), aggiungere semplicemente l'opzione signed-by=/percorso/file.gpg all'interno delle parentesi esistenti, separata dall'altra opzione con uno spazio.
Infine, per garantire una maggiore sicurezza rispetto ad usi impropri delle chiavi, occorre assegnare la chiave di autenticazione all'utente root e limitarne i permessi di esecuzione. A tale scopo utilizzare i comandi:
sudo chown root:root esempio-keyring.gpg sudo chmod 644 esempio-keyring.gpg
Per maggiori informazioni sul sistema di proprietà, accesso ed esecuzione dei file in Ubuntu consultare questa guida.
Chiave di autenticazione numerica
Nel caso la chiave d'autenticazione venga fornita in forma numerica esadecimale, del tipo:
sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 0xA1B2C3D4
occorre modificare la sinossi in questo modo:
sudo gpg --no-default-keyring --keyring /etc/apt/keyrings/esempio.gpg --recv-keys --keyserver keyserver.ubuntu.com 0xA1B2C3D4
Ricordare di anteporre sempre nella nuova procedura «0x» al codice numerico esadecimale.
Chiavi aggiunte in precedenza
In caso di chiavi ottenute in precedenza, sarà sufficiente spostarle da /etc/apt/trusted.gpg.d (o eventualmente anche da /etc/apt/trusted.gpg) nella directory prescelta (ad esempio /etc/apt/keyrings).
Dovrà poi essere modificato, se necessario, il relativo file .list all'interno di /etc/apt/sources.list.d secondo la sintassi descritta precedentemente.
Benché deprecato, è comunque possibile utilizzare apt-key per ottenere un elenco delle chiavi presenti, digitando il comando:
sudo apt-key list
Esempio generico di aggiunta di un repository di terze parti
Quello che segue è un esempio pratico dell'utilizzo dei precedenti passaggi, eseguiti in sequenza.
Importare la chiave di firma dei pacchetti del repository:
wget -qO - https://esempio.com/esempio-keyring.asc | gpg --dearmor | sudo tee /etc/apt/keyrings/esempio-keyring.gpg -
Importare il repository:
echo "deb [signed-by=/etc/apt/keyrings/esempio-keyring.gpg] https://esempio.com/ stable main" | sudo tee /etc/apt/sources.list.d/esempio.list
Cambiare in root il proprietario del file .gpg:
sudo chown root:root /etc/apt/keyrings/esempio-keyring.gpg
Limitare i permessi d'esecuzione del file .gpg:
sudo chmod 644 /etc/apt/keyrings/esempio-keyring.gpg
Terminata la procedura, sarà possibile utilizzare il repository di terze parti per installare e/o aggiornare i pacchetti desiderati, tramite le consuete modalità.
Ulteriori risorse
Wiki di Debian sui repository di terze parti (in inglese)
Pagina man apt-key (Ubuntu 22.04)
Pagina man apt-key (Debian Unstable)