I subuidi non sono pensati per funzionare nel modo in cui ti aspetti che funzionino. Sono progettati per mappare gli UID in uno spazio dei nomi utente a diversi UID al di fuori di tale spazio dei nomi, il che è utile (e in realtà è stato progettato) per i contenitori.
Tuttavia, un processo può ancora avere un solo UID impostato (spazio dei nomi utente) e agli utenti non è consentito modificare la proprietà dei file, per ovvi motivi di sicurezza. Non importa, per quanto riguarda il processo stesso, se l'utente è effettivamente qualcun altro al di fuori dello spazio dei nomi.
Ecco perché chown
comando fallisce:non importa se potresti avere qualche altro UID, se lo spazio dei nomi fosse diverso , in quel momento non hai quell'UID e, quindi, non puoi cambiare la proprietà di alcun file (visto che non sei root).
Per quanto riguarda il motivo per cui puoi rimuovere il file:in realtà non ha nulla a che fare con i subuid, invece, tutto dipende dal fatto che tu abbia la proprietà della directory in cui risiede il file. Poiché l'eliminazione del file cambia la directory e non il file stesso, se puoi scrivere la directory, puoi rimuovere qualsiasi file da essa (ad eccezione delle directory "appiccicose").
C'è un programma lxc-usernsexec
che accompagna lxc
. Ciò consente di rimappare gli ID utente utilizzando le mappe /etc/subuid
e /etc/subgid
.
Nello specifico, puoi fare quanto segue.
lxc-usernsexec -- touch /tmp/test
ls -l /tmp/test
mostrerà che il file è owner:group uguale alla prima coppia subuid:subgid nella tua mappa.rm /tmp/test
dovrebbe dare un errore poiché al momento non hai l'uid/gid corretto.lxc-usernsexec -- rm /tmp/test
dovrebbe rimuovere il file.
Spero che sia di aiuto! Quanto sopra probabilmente richiede varie impostazioni per l'uso del contenitore LXC senza privilegi. In particolare, penso a /proc/sys/kernel/unprivileged_userns_clone
dovrebbe essere 1.
Il tuo problema non ha nulla a che fare con subuid .
Secondo https://superuser.com/questions/697608/chown-operation-not-permitted
Gli utenti non privilegiati (non root) non possono eseguire il chown dei file con altri nomi utente. Per utilizzare chown, un utente deve disporre dei privilegi dell'utente di destinazione. In altre parole, solo root può dare un file a un altro utente.