Subuidy nemají fungovat tak, jak očekáváte, že budou fungovat. Jsou navrženy tak, aby mapovaly UID v uživatelském jmenném prostoru na různá UID mimo tento jmenný prostor, což se hodí (a vlastně bylo navrženo) pro kontejnery.
Proces však stále může mít nastaveno pouze jedno UID (uživatelský jmenný prostor) a uživatelé nemají povoleno měnit vlastnictví souborů ze zřejmých bezpečnostních důvodů. Nezáleží na tom, pokud jde o samotný proces, jestli je uživatel ve skutečnosti někdo jiný mimo jmenný prostor.
To je důvod, proč chown
příkaz selže:nezáleží na tom, zda můžete mít nějaké jiné UID, pokud by jmenný prostor byl jiný , v tu chvíli toto UID nemáte, a proto nemůžete změnit vlastnictví žádných souborů (protože nejste root).
Proč můžete soubor odstranit:ve skutečnosti to nemá nic společného se subuids, místo toho vše závisí na tom, zda máte vlastnictví adresáře, ve kterém se soubor nachází. Vzhledem k tomu, že odstranění souboru změní adresář, a ne soubor samotný, pokud můžete zapsat adresář, můžete z něj odstranit jakékoli soubory (kromě "sticky" adresářů).
Existuje program lxc-usernsexec
který je dodáván spolu s lxc
. To vám umožní přemapovat ID uživatelů pomocí map /etc/subuid
a /etc/subgid
.
Konkrétně můžete provést následující.
lxc-usernsexec -- touch /tmp/test
ls -l /tmp/test
ukáže, že soubor je vlastník:skupina stejný jako první pár subuid:subgid ve vaší mapě.rm /tmp/test
by měl dát chybu, protože aktuálně nemáte správné uid/gid.lxc-usernsexec -- rm /tmp/test
by měl soubor odstranit.
Snad to pomůže! Výše uvedené pravděpodobně vyžaduje různé nastavení pro nepřivilegované použití kontejneru LXC. Konkrétně si myslím, že /proc/sys/kernel/unprivileged_userns_clone
by měla být 1.
Váš problém nemá nic společného se subuidem .
Podle https://superuser.com/questions/697608/chown-operation-not-permitted
Neprivilegovaní uživatelé (nikoli root) nemohou předávat soubory jiným uživatelským jménům. Pro použití chown musí mít uživatel oprávnění cílového uživatele. Jinými slovy, pouze root může dát soubor jinému uživateli.