Subuid tidak dimaksudkan untuk bekerja seperti yang Anda harapkan. Mereka dirancang untuk memetakan UID di namespace pengguna ke UID berbeda di luar namespace tersebut, yang berguna (dan memang didesain) untuk container.
Namun, sebuah proses masih dapat memiliki hanya satu set UID (ruang nama pengguna), dan pengguna tidak diizinkan mengubah kepemilikan file, karena alasan keamanan yang jelas. Tidak masalah, sejauh menyangkut proses itu sendiri, jika pengguna sebenarnya adalah orang lain di luar namespace.
Inilah mengapa chown
perintah gagal:tidak masalah jika Anda bisa memiliki beberapa UID lain, harus namespace berbeda , pada saat itu, Anda tidak memiliki UID tersebut, dan karena itu, Anda tidak dapat mengubah kepemilikan file apa pun (karena Anda bukan root).
Mengapa Anda dapat menghapus file:itu sebenarnya tidak ada hubungannya dengan subuid, sebaliknya, itu semua tergantung pada Anda memiliki kepemilikan direktori tempat file berada. Karena penghapusan file mengubah direktori, dan bukan file itu sendiri, jika Anda dapat menulis direktori, Anda dapat menghapus file apa pun dari itu (kecuali untuk direktori "lengket").
Ada program lxc-usernsexec
yang disertakan dengan lxc
. Ini memungkinkan Anda untuk memetakan kembali id pengguna menggunakan peta /etc/subuid
dan /etc/subgid
.
Khususnya, Anda dapat melakukan hal berikut.
lxc-usernsexec -- touch /tmp/test
ls -l /tmp/test
akan menunjukkan bahwa file tersebut adalah owner:group sama dengan pasangan subuid:subgid pertama di peta Anda.rm /tmp/test
seharusnya memberikan kesalahan karena saat ini Anda tidak memiliki uid/gid yang tepat.lxc-usernsexec -- rm /tmp/test
harus menghapus file tersebut.
Semoga ini membantu! Hal di atas mungkin memerlukan berbagai pengaturan untuk penggunaan wadah LXC yang tidak terjangkau. Secara khusus, menurut saya /proc/sys/kernel/unprivileged_userns_clone
seharusnya 1.
Masalah Anda tidak ada hubungannya dengan subuid .
Menurut https://superuser.com/questions/697608/chown-operation-not-permitted
Pengguna yang tidak memiliki hak istimewa (bukan root) tidak dapat mengubah file ke nama pengguna lain. Untuk menggunakan chown, pengguna harus memiliki hak istimewa dari pengguna target. Dengan kata lain, hanya root yang dapat memberikan file ke pengguna lain.