Subuids sollen nicht so funktionieren, wie Sie es erwarten. Sie wurden entwickelt, um UIDs in einem Benutzernamensraum verschiedenen UIDs außerhalb dieses Namensraums zuzuordnen, was für Container praktisch ist (und tatsächlich entworfen wurde).
Ein Prozess kann jedoch immer noch nur einen UID-Satz (Benutzernamensraum) haben, und Benutzern ist es aus offensichtlichen Sicherheitsgründen nicht gestattet, den Besitz von Dateien zu ändern. Für den Prozess selbst spielt es keine Rolle, ob der Benutzer tatsächlich jemand anderes außerhalb des Namensraums ist.
Deshalb der chown
Befehl schlägt fehl:Es spielt keine Rolle, ob Sie könnten eine andere UID haben, sollte der Namensraum anders sein , zu diesem Zeitpunkt haben Sie diese UID nicht und können daher den Eigentümer von Dateien nicht ändern (da Sie nicht root sind).
Warum können Sie die Datei entfernen:Es hat eigentlich nichts mit Subuids zu tun, sondern es hängt alles davon ab, dass Sie Eigentümer des Verzeichnisses sind, in dem sich die Datei befindet. Da das Löschen von Dateien das Verzeichnis und nicht die Datei selbst ändert, if Sie können das Verzeichnis schreiben, Sie können alle Dateien daraus entfernen (außer "Sticky"-Verzeichnissen).
Es gibt ein Programm lxc-usernsexec
das kommt zusammen mit lxc
. Dadurch können Sie Benutzer-IDs mithilfe der Zuordnungen /etc/subuid
neu zuordnen und /etc/subgid
.
Insbesondere können Sie Folgendes tun.
lxc-usernsexec -- touch /tmp/test
ls -l /tmp/test
wird zeigen, dass die Datei Eigentümer:Gruppe ist, das gleiche wie das erste subuid:subgid-Paar in Ihrer Karte.rm /tmp/test
sollte einen Fehler ausgeben, da Sie derzeit nicht die richtige uid/gid haben.lxc-usernsexec -- rm /tmp/test
sollte die Datei entfernen.
Hoffe das hilft! Das obige erfordert wahrscheinlich verschiedene Dinge, die für die Verwendung von nicht privilegierten LXC-Containern eingerichtet wurden. Insbesondere denke ich an /proc/sys/kernel/unprivileged_userns_clone
sollte 1 sein.
Dein Problem hat nichts mit subuid zu tun.
Gemäß https://superuser.com/questions/697608/chown-operation-not-permitted
Nicht-privilegierte Benutzer (nicht root) können keine Dateien auf andere Benutzernamen übertragen. Um chown zu verwenden, muss ein Benutzer die Privilegien des Zielbenutzers haben. Mit anderen Worten, nur root kann eine Datei an einen anderen Benutzer weitergeben.