Probleme commandes podman en rootles
Il arrive parfois que les commandes Podman échouent pour un utilisateur rootless. Ce problème survient lorsque le répertoire runtime rootless de l’utilisateur n’est pas accessible ou possède de mauvaises permissions.
Failed to obtain podman configuration: mkdir /run/user/XXXX/libpod: permission denied |
Origine du problème
Podman rootless utilise le répertoire $XDG_RUNTIME_DIR pour stocker ses données et sockets temporaires (libpod, run, etc.). Par défaut, ce répertoire se situe dans /run/user/<UID> et doit appartenir à l’utilisateur qui lance podman.
Si le répertoire appartient à un autre utilisateur ou si les permissions sont incorrectes, Podman rootless ne peut pas créer ses fichiers, et toute commande rootless échoue.
Exemple avec un simple podman ps qui échoue ou ne renvoie rien :
$ sudo podman ps --all |
$ podman ps --all |
Car ici l’utilisateur courant n’a aucun droit sur son runtime :
$ echo $XDG_RUNTIME_DIR |
$ ls -ld $XDG_RUNTIME_DIR |
Restaurer la propriété et les permissions
La variable $XDG_RUNTIME_DIR doit toujours être accessible en écriture pour l’utilisateur rootless afin que Podman fonctionne correctement.
Vérifier que le répertoire runtime correspond à l’utilisateur courant :
$ echo $XDG_RUNTIME_DIR |
Si nécessaire, corriger :
$ sudo chown -R $(whoami):$(id -gn) $XDG_RUNTIME_DIR |
Les commandes Podman doivent maintenant fonctionner correctement :
$ podman ps --all |
Forcer la création d’un runtime rootless temporaire
Si $XDG_RUNTIME_DIR est manquant ou inaccessible, on peut créer un répertoire temporaire pour le runtime rootless, pratique pour les shells non-interactifs ou les scripts. Ce runtime reste temporaire et sera perdu après reboot ou nettoyage du /tmp.
$ export XDG_RUNTIME_DIR=/tmp/podman-runtime-$(id -u) |
Les commandes Podman devraient maintenant renvoyer des informations :
$ podman ps --all |
Documentations
Podman