apt

Pourquoi les clés GPG d'apt doivent-elles être lisibles dans le monde entier ?

Lors de l'utilisation de l'option "Signed-by" pour les entrées de repo apt,apt lance une erreur si la clé n'est pas lisible par tous.

Example:

deb [arch=amd64 signed-by=/etc/apt/keyrings/hashicorp.gpg] https://apt.releases.hashicorp.com jammy main

sudo chmod 660 /etc/apt/keyrings/hashicorp.gpg
sudo apt-get update  


https://apt.releases.hashicorp.com jammy InRelease
The following signatures couldn't be verified because the public key is not available: NO_PUBKEY DA418C88A3219F7B  

sudo chmod 664 /etc/apt/keyrings/hashicorp.gpg  
sudo apt-get update  
Hit:10 https://apt.releases.hashicorp.com jammy InRelease

Pourquoi ?


Ils ne doivent pas nécessairement être lisibles par tous, mais ils doivent être lisibles par l'utilisateur sous lequel apt s'exécute. Apt, même lorsqu'il est exécuté en tant que root, supprime généralement les privilèges pour les actions qui n'en ont pas besoin, en passant à l' utilisateur _apt . Par example:

# getent passwd _apt
_apt:x:100:65534::/nonexistent:/usr/sbin/nologin
# strace -f mise à jour apt |& grep si_uid
--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=708, si_uid=0, si_status=0, si_utime=0, si_stime=0} ---
[pid   709] --- SIGINT {si_signo=SIGINT, si_code=SI_USER, si_pid=707, si_uid=0} ---
--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=709, si_uid=0, si_status=100, si_utime=0, si_stime=0} ---
[pid   712] --- SIGINT {si_signo=SIGINT, si_code=SI_USER, si_pid=707, si_uid=0} ---
[pid   707] --- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_KILLED, si_pid=712, si_uid=0, si_status=SIGINT, si_utime=0, si_stime=0} ---
[pid   715] --- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=716, si_uid=100, si_status=0, si_utime=0, si_stime=0} ---
[pid   717] --- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=718, si_uid=100, si_status=0, si_utime=0, si_stime=0} ---
[pid   715] --- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=717, si_uid=100, si_status=0, si_utime=0, si_stime=0} ---

Notez que l'UID de nombreux processus enfants est 100, celui de l' utilisateur _apt .

Cela dit,il n'y a aucun avantage à rendre les clés lisibles uniquement par root.