Sous les systèmes Linux, Podman est un moteur de conteneur léger populaire, mais vous devez faire attention à certains détails lors de l'utilisation de conteneurs. L'un des problèmes importants est de savoir comment utiliser correctement la commande sudo pour gérer les conteneurs afin de garantir la sécurité et la fiabilité. Cet article explique comment utiliser les commandes sudo pour gérer correctement les conteneurs Podman.
Les conteneurs sont un élément essentiel de l'informatique moderne, et à mesure que l'infrastructure autour des conteneurs évolue, de nouveaux et meilleurs outils commencent à faire surface. Dans le passé, vous pouviez simplement utiliser LXC pour exécuter des conteneurs, mais à mesure que Docker gagnait en popularité, il commençait à devenir de plus en plus complexe. Enfin, dans Podman, nous obtenons ce que nous attendions d'un système de gestion de conteneurs : un moteur de conteneurs sans démon qui facilite la création, l'exécution et la gestion des conteneurs et des pods.
Les conteneurs interagissent directement avec les fonctionnalités du noyau Linux telles que les groupes de contrôle et les espaces de noms, et génèrent un grand nombre de nouveaux processus dans ces espaces de noms. En bref, exécuter un conteneur revient en fait à exécuter un système Linux à l'intérieur d'un système Linux. Du point de vue du système d'exploitation, cela ressemble beaucoup à une activité administrative et privilégiée. Les utilisateurs ordinaires n'ont généralement pas le même contrôle libre sur les ressources système que les conteneurs, donc par défaut, l'exécution de Podman nécessite les privilèges root ou sudo. Cependant, il ne s’agit que du paramètre par défaut et ce n’est en aucun cas le seul paramètre disponible. Cet article montre comment configurer votre système Linux afin que les utilisateurs ordinaires puissent exécuter Podman sans sudo (« sans racine »).
ID utilisateur de l'espace de noms
L'espace de noms du noyau est essentiellement une structure fictive qui aide Linux à savoir quels processus appartiennent à la même classe. Il s'agit du « garde-corps de file d'attente » sous Linux. Il n'y a vraiment aucune différence entre les processus d'une file d'attente et les processus d'une autre file d'attente, mais ils peuvent être « isolés » les uns des autres. Pour déclarer un ensemble de processus comme « conteneur » et un autre ensemble de processus comme système d’exploitation, il est essentiel de les garder séparés.
Linux utilise l'ID utilisateur (UID) et l'ID de groupe (GID) pour suivre quel utilisateur ou groupe possède un processus. En règle générale, un utilisateur a accès à un millier d’UID esclaves attribués aux processus enfants dans un espace de noms. Étant donné que Podman exécute l'intégralité du système d'exploitation esclave attribué à l'utilisateur qui a lancé le conteneur, vous avez besoin de plus que l'UID et le GID esclave attribués par défaut.
Vous pouvez accorder à un utilisateur davantage d'UID et de GID subordonnés à l'aide de la commande usermod. Par exemple, pour accorder à l'utilisateur tux davantage d'UID subordonnés et de GID subordonnés, choisissez un UID suffisamment élevé (par exemple 200 000) pour les utilisateurs qui ne lui sont pas encore attribués, puis augmentez-le de quelques milliers :
$ sudo usermod \ --add-subuids 200000-265536 \ --add-subgids 200000-265536 \ tux
Accès à l'espace de noms
Il existe également une limite sur le nombre d'espaces de noms. Ce montant est généralement fixé à un niveau très élevé. Vous pouvez utiliser systctl, l'outil de paramètres du noyau, pour vérifier les allocations d'espace de noms utilisateur :
$ sysctl --all --pattern user_namespaces user.max_user_namespaces = 28633
C'est beaucoup d'espace de noms et peut être l'espace par défaut pour votre distribution. Si votre distribution ne possède pas cette propriété ou est définie à un niveau très bas, vous pouvez la créer en saisissant un texte comme celui-ci dans le fichier /etc/sysctl.d/userns.conf :
user.max_user_namespaces=28633
Chargez ce paramètre :
$ sudo sysctl -p /etc/sysctl.d/userns.conf
Exécuter un conteneur sans privilèges root
Lorsque vous avez configuré votre configuration, redémarrez votre ordinateur pour vous assurer que les modifications de vos paramètres utilisateur et noyau sont chargées et activées.
Après le redémarrage, essayez d'exécuter une image de conteneur :
$ podman run -it busybox echo "hello" hello
Les conteneurs sont comme des commandes
Cet article détaille la posture correcte pour utiliser sudo pour maintenir les conteneurs Podman sous les systèmes Linux, y compris la configuration des fichiers sudoers, la configuration de la sécurité et le démarrage des conteneurs. En configurant et en utilisant correctement sudo, nous pouvons mieux protéger la sécurité et la fiabilité des conteneurs et mieux répondre aux besoins de l'entreprise. Il convient de noter que dans les opérations réelles, les informations sensibles doivent être traitées avec prudence afin de garantir qu'aucune perte inutile ne soit causée. J'espère que cet article pourra vous aider à mieux maîtriser les compétences d'utilisation de la commande sudo pour gérer les conteneurs Podman.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!