Che cos'è /lib64/ld-linux-x86-64.so.2 e perché può essere utilizzato per eseguire file?


17

Recentemente, ho imparato un trucco che se un file manca di autorizzazioni eseguibili, possiamo eseguirlo usando /lib64/ld-linux-x86-64.so.2.

Ad esempio, per ripristinare l'autorizzazione x per

-rw-r--r-- 1 root root 59K Mar  1  2017 /bin/chmod

possiamo correre

/lib64/ld-linux-x86-64.so.2 /bin/chmod +x /bin/chmod

Non so davvero come si possa fare, non è una cosa normale, un po 'misteriosa.

Risposte:


18

Questo è il linker dinamico; se lo esegui da solo, ti dirà cosa fa:

Uso: ld.so [OPTION]... EXECUTABLE-FILE [ARGS-FOR-PROGRAM...]

Hai invocato 'ld.so', il programma di supporto per gli eseguibili della libreria condivisa. Questo programma di solito risiede nel file /lib/ld.soe direttive speciali nei file eseguibili che utilizzano librerie condivise ELF indicano al programma di caricamento del sistema di caricare il programma di supporto da questo file. Questo programma di supporto carica le librerie condivise necessarie all'eseguibile del programma, prepara l'esecuzione del programma e lo esegue. È possibile richiamare questo programma di supporto direttamente dalla riga di comando per caricare ed eseguire un file eseguibile ELF; è come eseguire quel file stesso, ma usa sempre questo programma di supporto dal file specificato, invece del file di programma di supporto specificato nel file eseguibile che si esegue. Questo è principalmente utile per i manutentori per testare nuove versioni di questo programma di supporto; è probabile che tu non abbia intenzione di eseguire questo programma.

Il linker viene utilizzato per eseguire programmi collegati dinamicamente. Quando esegui chmod, il kernel funziona in modo efficace /lib64/ld-linux-x86-64.so.2 chmod, come hai fatto manualmente; quest'ultimo funziona anche se il chmodbinario non è eseguibile.

Troverai molti più dettagli su questo nell'eccellente come vengono eseguiti i programmi: l' articolo sui binari ELF .

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.