Simulasikan chroot dengan unshare


13

Saya mencoba menulis bootstrapper untuk distribusi linux minimal dari sumber.

Saya ingin membangun di lingkungan seperti chroot. Ini harus menyederhanakan kemasan. Saya tidak peduli dengan keamanan pada saat ini. Bootstrapper seharusnya tidak memerlukan perintah pihak ketiga yang tidak standar. Akan lebih bagus jika tidak perlu menjadi root.

Inilah mengapa fakechroot (1) fakeroot (1) chroot (1) tidak persis seperti yang saya cari.

Apakah mungkin untuk berpura-pura / menggunakan unshare (1) dan / bin / sh?


AFAICS, unshare(1)adalah pembungkus yang agak tipis di sekitar kumpulan panggilan sistem hanya root, dan (setidaknya pada Fedora 18) itu bukan SUID, jadi saya sangat meragukan bahwa itu akan bekerja untuk pengguna non-root.
vonbrand

Oh, itu memalukan. Saya mendapat kesan unshare adalah setuid. Saya kira saya baik-baik saja dengan menjadi root.
Rooties

4
Dengan rilis kernel Linux 3.8 yang baru, Anda dapat menggunakan fitur namespace sebagai non-root. Tetapi ini adalah hal baru yang mengkilap: Anda memerlukan namespace uid terlebih dahulu, dan unshare belum mendukungnya. Dan tindakan Anda masih akan terbatas.
BatchyX

Jawaban:


5

Iya. Jika kernel Anda mendukung user_namespaces (dan mereka diaktifkan) , Anda dapat terlebih dahulu "mensimulasikan root", yang kemudian mendapatkan hak untuk memanggil chroot(sebagai pengguna root nyata). (Yang sebelumnya perlu dibatasi hanya untuk pengguna root karena kemungkinan peningkatan hak istimewa oleh pengguna normal (katakanlah, melalui binari set-UID-root dan perpustakaan khusus di direktori chroot).)

Anda dapat mencoba ini di shell Anda:

unshare --user --map-root-user --mount-proc --pid --fork
/sbin/chroot ......
su - user1

opsi tidak dikenal '--map-root-user'
Zibri

1
@ Zibri Ini bekerja untuk saya sekarang, dengan unsharedari util-linux-2.30.2-alt1
imz - Ivan Zakharyaschev

1

Hanya bundel atau instal fakeroot / fakechroot, karena mereka sudah sangat cocok untuk ini. Lihatlah cdebootstrap untuk mencari inspirasi.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.