Symuluj chroot za pomocą unshare


13

Próbuję napisać bootstrapper dla minimalnej dystrybucji linux ze źródła.

Chciałbym budować w środowisku chroot. To powinno uprościć pakowanie. W tym momencie nie dbam o bezpieczeństwo. Program ładujący nie powinien wymagać żadnych niestandardowych poleceń innych firm. Byłoby świetnie, gdyby nie było potrzeby rootowania.

Właśnie dlatego fakechroot (1) fakeroot (1) chroot (1) nie jest dokładnie tym, czego szukam.

Czy można sfałszować / użyć unshare (1) i / bin / sh?


AFAICS, unshare(1)to raczej cienkie opakowanie wokół kolekcji wywołań systemowych tylko do roota, i (przynajmniej w Fedorze 18) nie jest to SUID, więc bardzo wątpię, czy to zadziała dla użytkowników innych niż root.
vonbrand,

Och, szkoda. Miałem wrażenie, że nieudostępnianie jest setuid. Chyba nie mam nic przeciwko byciu rootem.
Korzenie

4
Wraz z wydaniem nowego jądra Linux 3.8 możesz używać funkcji przestrzeni nazw jako użytkownika innego niż root. Ale to nowe, błyszczące rzeczy: najpierw potrzebujesz przestrzeni nazw UID, a unshare jeszcze jej nie obsługuje. A twoje działania będą nadal ograniczone.
BatchyX

Odpowiedzi:


5

Tak. Jeśli twoje jądro obsługuje przestrzenie nazw użytkownika (i są one włączone) , możesz najpierw „symulować użytkownika root”, który następnie ma prawo do wywołania chroot(jako prawdziwy użytkownik root). (Które poprzednio musiało być ograniczone tylko do użytkownika root, ze względu na możliwość eskalacji uprawnień przez zwykłego użytkownika (powiedzmy przez binaria root set-UID i biblioteki niestandardowe w katalogu chroot).)

Możesz wypróbować to w swojej powłoce:

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

nierozpoznana opcja '--map-root-user'
Zibri

1
Działa @Zibri To dla mnie teraz, wraz unsharez util-linux-2.30.2-ALT1
IMZ - Ivan Zakharyaschev

1

Po prostu spakuj lub zainstaluj fakeroot / fakechroot, ponieważ są już do tego idealnie odpowiednie. Inspiracje znajdziesz w cdebootstrap.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.