Docker est une technologie de virtualisation couramment utilisée qui nous aide à créer et déployer rapidement des applications. Il se caractérise par sa rapidité, sa légèreté et sa sécurité. L'une des caractéristiques de sécurité importantes est que lors de l'exécution d'une application dans un conteneur, l'application peut être exécutée dans un environnement restreint. De plus, les conteneurs Docker prennent également en charge la gestion des autorisations des utilisateurs, ce qui peut améliorer la sécurité des applications en ajoutant un nouvel utilisateur et en basculant vers cet utilisateur. Cependant, vous pouvez rencontrer des problèmes lors du changement d'utilisateur. Par exemple, les utilisateurs du conteneur ne peuvent pas utiliser la commande su pour passer à d'autres utilisateurs. Ci-dessous, nous expliquerons les principales raisons et solutions pour l'échec du changement d'utilisateur dans les conteneurs Docker.
Lorsque vous utilisez la commande su pour changer d'utilisateur dans le conteneur Docker, vous devez utiliser la commande sudo pour élever temporairement les autorisations et saisir le mot de passe de l'utilisateur root pour exécuter le su commande. Si la commande sudo n'est pas installée dans le conteneur Docker, l'opération de changement d'utilisateur ne s'effectuera pas correctement. Par conséquent, vous devez installer la commande sudo dans le conteneur pour résoudre ce problème :
apt-get update && apt-get install -y sudo
Après l'installation, vous pouvez essayer d'utiliser la commande su username pour changer d'utilisateur.
L'UID et le GID de l'utilisateur à l'intérieur du conteneur Docker peuvent être différents de l'UID et du GID de la machine hôte, ce qui peut entraîner l'obtention d'autorisations lors du changement de question d'utilisateur. Par exemple, lors de l'exécution d'un serveur Apache dans un conteneur Docker, lorsque vous utilisez la commande su www-data pour basculer vers l'utilisateur www-data, l'UID et le GID de l'utilisateur www-data ne correspondront pas à l'UID et au GID de l'utilisateur www-data. Utilisateur www-data sur la machine hôte De même, l'utilisateur www-data ne pourra pas accéder à certains répertoires et fichiers sur la machine hôte. Afin de résoudre ce problème, vous devez ajouter une directive USER dans le Dockerfile pour spécifier l'UID et le GID de l'utilisateur dans le conteneur, par exemple :
FROM ubuntu:latest RUN useradd -ms /bin/bash youruser USER youruser
Ici, nous créons un utilisateur nommé youruser et spécifions son UID et son GID. comme valeur par défaut. Si vous devez utiliser d'autres noms d'utilisateur et UID dans le conteneur, vous pouvez les modifier en fonction de la situation réelle.
Dans certains systèmes d'exploitation Linux, tels que Red Hat Enterprise Linux (RHEL) ou Ubuntu, SELinux ou AppArmor peuvent restreindre les droits d'accès des utilisateurs dans le conteneur. Si vous ne parvenez pas à utiliser la commande su pour changer d'utilisateur dans un conteneur Docker, envisagez de désactiver SELinux ou AppArmor ou de le configurer pour permettre aux utilisateurs du conteneur d'accéder à des répertoires et des fichiers spécifiques. Ici, nous présentons brièvement comment configurer AppArmor dans Ubuntu pour permettre aux utilisateurs du conteneur d'accéder à certains répertoires et fichiers sur la machine hôte.
Tout d'abord, vous devez ajouter l'instruction suivante au Dockerfile :
RUN apt-get update && apt-get install -y apparmor-utils
Ensuite, créez un fichier nommé your-container dans le répertoire /etc/apparmor.d/docker/ et ajoutez le contenu suivant :
/path/to/your/dir rw,
Le / ci-dessus path/to/your/dir représente un répertoire sur la machine hôte, que vous pouvez modifier selon vos besoins. Après l'ajout, rechargez la configuration AppArmor :
/etc/init.d/apparmor reload
Voici quelques raisons et solutions possibles en cas d'échec du changement d'utilisateur dans les conteneurs Docker. En comprenant ces problèmes et solutions, vous pouvez mieux comprendre la gestion des droits d'utilisateur et la sécurité des conteneurs Docker.
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!