Les sous-uids ne sont pas censés fonctionner comme vous vous y attendez. Ils sont conçus pour mapper les UID d'un espace de noms d'utilisateur à différents UID en dehors de cet espace de noms, ce qui est pratique (et a en fait été conçu) pour les conteneurs.
Cependant, un processus ne peut toujours avoir qu'un seul ensemble d'UID (espace de noms d'utilisateur) et les utilisateurs ne sont pas autorisés à modifier la propriété des fichiers, pour des raisons de sécurité évidentes. Peu importe, en ce qui concerne le processus lui-même, si l'utilisateur est en fait quelqu'un d'autre en dehors de l'espace de noms.
C'est pourquoi le chown
la commande échoue :peu importe si vous pouviez avoir un autre UID, si l'espace de noms était différent , à ce moment-là, vous n'avez pas cet UID, et par conséquent, vous ne pouvez pas changer la propriété des fichiers (puisque vous n'êtes pas root).
À partir de pourquoi pouvez-vous supprimer le fichier:cela n'a en fait rien à voir avec les sous-uids, à la place, tout dépend de la propriété du répertoire dans lequel se trouve le fichier. Étant donné que la suppression du fichier modifie le répertoire, et non le fichier lui-même, si vous pouvez écrire le répertoire, vous pouvez en supprimer tous les fichiers (à l'exception des répertoires "collants").
Il existe un programme lxc-usernsexec
qui vient avec lxc
. Cela vous permet de remapper les identifiants d'utilisateur à l'aide des cartes /etc/subuid
et /etc/subgid
.
Plus précisément, vous pouvez effectuer les opérations suivantes.
lxc-usernsexec -- touch /tmp/test
ls -l /tmp/test
montrera que le fichier est propriétaire:groupe identique à la première paire subuid:subgid dans votre carte.rm /tmp/test
devrait donner une erreur puisque vous n'avez pas actuellement le bon uid/gid.lxc-usernsexec -- rm /tmp/test
devrait supprimer le fichier.
J'espère que cela t'aides! Ce qui précède nécessite probablement la configuration de diverses choses pour une utilisation non privilégiée du conteneur LXC. En particulier, je pense que /proc/sys/kernel/unprivileged_userns_clone
devrait être 1.
Votre problème n'a rien à voir avec subuid .
Selon https://superuser.com/questions/697608/chown-operation-not-permitted
Les utilisateurs non privilégiés (pas root) ne peuvent pas chown des fichiers à d'autres noms d'utilisateurs. Pour utiliser chown, un utilisateur doit avoir les privilèges de l'utilisateur cible. En d'autres termes, seul root peut donner un fichier à un autre utilisateur.