Jak mogę uruchomić plik wykonywalny, aby sądził, że katalog główny znajduje się na niestandardowej ścieżce, a nie na głównym katalogu głównym. Myślałem, że będzie to możliwe z sandbox-exec, ale jak dotąd nie znalazłem żadnych sposobów.
1
chroot
. Podaj to do swojej ulubionej wyszukiwarki.chroot
. Czy chcesz napisać to jako odpowiedź?Odpowiedzi:
Ogólnym terminem na systemy operacyjne Unix-podobne do uruchamiania procesu z dedykowanym katalogiem głównym jest
chroot
(skrót od „zmień katalog główny”).Kanonicznym sposobem na zrobienie tego jest coś w rodzaju:
Zakładając, że masz włączoną funkcję uruchomioną w / tmp, zmieniłoby to katalog główny, który
/tmp/chroot-dir
staje się nowym/
dla tego procesu, a następnie wykonał to/sh
w kontekście tego. Możliwe, żechroot
będziesz musiał być użytkownikiem root; w tym przypadku zastąpićsudo chroot
zachroot
. Po wyjściu z powielonej powłoki wszystko wróci do normy.Ponieważ / bin / sh prawdopodobnie potrzebuje pewnych bibliotek, konkretny przykład może się nie udać, ale będzie wskazywał właściwy kierunek, co jest potrzebne. W systemie Linux uruchamianie
ldd /bin/sh
powie Ci, jakie dodatkowe biblioteki są wymagane; OS X prawdopodobnie ma coś podobnego, jeśli nie to samo. Nietrywialne oprogramowanie również często potrzebuje plików konfiguracyjnych, węzłów urządzeń i innych szans na znalezienie systemu plików.Oprogramowanie zorientowane na konsumenta na ogół nie zajmuje się zbytnio chrootowaniem bez znacznego wysiłku, ale oprogramowanie serwerowe często można namówić do chroota przy stosunkowo niewielkim wysiłku, a niektórzy nawet dostarczają dokumentację dokładnie tego, co jest potrzebne.
źródło