Quindi ho fatto un chmod -x chmod
. Come posso risolvere questo problema? Come posso restituire i diritti di esecuzione a chmod?
Quindi ho fatto un chmod -x chmod
. Come posso risolvere questo problema? Come posso restituire i diritti di esecuzione a chmod?
Risposte:
/lib64/ld-linux-x86-64.so.2
invece. ldd /bin/chmod
dovrebbe elencare esattamente quale linker eseguire.
man ld-linux.so
: "ld.so [e ld-linux.so] carica le librerie condivise necessarie a un programma, prepara l'esecuzione del programma e quindi lo esegue." ( ld.so
è per gli a.out
eseguibili di formato ed ld-linux.so
è per il formato ELF.)
ld-linux.so
è una sorta di ibrido eseguibile / libreria, una specie di link statico, viene eseguito nello spazio utente ed è responsabile del caricamento di file eseguibili collegati dinamicamente e di tutte le loro dipendenze, quindi della loro esecuzione.
Usa Python:
# python
Python> import os
Python> os.chmod("/bin/chmod",0755)
python -c "import os; os.chmod('/bin/chmod', 0755)"
Ciò si basa sul fatto che le autorizzazioni di un file di destinazione vengono conservate anziché il file di origine quando viene copiato. Stiamo "prendendo in prestito" le autorizzazioni di ls
:
cp /bin/ls /tmp/chmod.tmp
cp /bin/chmod /tmp/chmod.tmp
mv /tmp/chmod.tmp /bin/chmod
cp
debbano avere la bandiera -p
cp
eseguito il file eseguibile, ho appena inserito il cat
contenuto chmod
nel file temporaneo.
setfacl -m u::rx /bin/chmod
... garantirà al proprietario l'esecuzione delle autorizzazioni.
Ma il /lib/ld-linux.so.2
trucco è pulito. :)
È strano ... Ho visto qualcosa del genere qualche giorno fa tramite il tweet di qualcuno ...
Sospetto che questa non sia una vera domanda: http://www.slideshare.net/cog/chmod-x-chmod
crea un nuovo chmod e usalo per l'originale
umask 000
cat chmod > ~/my-chmod
~/my-chmod a+x chmod
(umask 000;gcc -o foo foo.c)
Produrranno un foo
con modalità 777). Tuttavia, molte (la maggior parte?) Shell passano 0666 quando aprono / creano file per il reindirizzamento, il che significa che questa risposta non funzionerà con molte shell.
chmod
!