Uruchom plik wykonywalny z własnym katalogiem głównym

1

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.

Shien
źródło
Nie jestem pewien, jaka byłaby dokładna mechanika w systemie OS X, ale ogólny termin, którego szukasz, to chroot. Podaj to do swojej ulubionej wyszukiwarki.
CVn
Dzięki! Całkowicie zapomniałem o chroot. Czy chcesz napisać to jako odpowiedź?
Shien

Odpowiedzi:

1

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:

$ mkdir /tmp/chroot-dir
$ cp /bin/sh /tmp/chroot-dir/
$ chroot /tmp/chroot-dir /sh

Zakładając, że masz włączoną funkcję uruchomioną w / tmp, zmieniłoby to katalog główny, który /tmp/chroot-dirstaje się nowym /dla tego procesu, a następnie wykonał to /shw kontekście tego. Możliwe, że chrootbędziesz musiał być użytkownikiem root; w tym przypadku zastąpić sudo chrootza chroot. 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/shpowie 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.

CVn
źródło