Avvia il file eseguibile con la directory principale personalizzata


1

Come posso avviare un eseguibile in modo che pensi che la directory principale sia su un percorso personalizzato e non sulla radice effettiva. Ho pensato che sarebbe stato possibile con sandbox-exec, ma finora non ho trovato alcun modo.


Non sono sicuro di quale sia la meccanica esatta su OS X, ma il termine generale che stai cercando è chroot. Inseriscilo nel tuo motore di ricerca preferito.
un CVn del

Grazie! Mi ero completamente dimenticato chroot. Vuoi scriverlo come risposta?
Shien,

Risposte:


1

Il termine generale su sistemi operativi simili a Unix per eseguire un processo con una directory root dedicata è chroot(abbreviazione di "cambia directory root").

Il modo canonico per farlo è qualcosa del tipo:

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

Supponendo che hai eseguito on / tmp, ciò cambierebbe la directory principale in modo che /tmp/chroot-dirdiventi la nuova /per quel processo, quindi eseguirà /shnel contesto di quello. È possibile che chrootti richieda di essere l'utente root; in tal caso, sostituire sudo chrootper chroot. Quando esci dalla shell generata, tutto tornerà alla normalità.

Poiché / bin / sh probabilmente ha bisogno di alcune librerie, è probabile che l'esempio specifico fallisca, ma ti indicherà la giusta direzione per cos'altro è necessario. Su Linux, l'esecuzione ldd /bin/shti dirà quali librerie aggiuntive sono richieste; OS X probabilmente ha qualcosa di simile, se non la stessa cosa. Anche i software non banali necessitano spesso di file di configurazione, nodi di dispositivo e altre probabilità e estremità disponibili nella sua vista del file system.

Il software orientato al consumatore in genere non porta molto bene al chroot senza uno sforzo significativo, ma il software del server può spesso essere trasformato in un chroot con uno sforzo relativamente piccolo, e alcuni addirittura arrivano con la documentazione su esattamente ciò che è necessario.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.