Dateiberechtigungen in Kali Linux ändern

4487
warfreak92

Wie kann man die Dateiberechtigungen ändern, um eine binäre ausführbare ELF-Datei in Kali Linux auszuführen? Ich habe es ausprobiert chmod +x <filename>und dann laufen lassen, ./filenameaber alles was ich bekomme ist Error: No file found. Irgendwelche anderen Ideen? Ich habe es sogar versucht chmod 777 <filename>. Ich frage mich, ob ich etwas vermisse?

Bearbeiten:

Ausgabe von file <filename>:

root@swat:~/Downloads# file talisman  talisman: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV),  dynamically linked, interpreter /lib/ld-linux.so.2, for GNU/Linux 2.6.32,  BuildID[sha1]=2b131df906087adf163f8cba1967b3d2766e639d, not stripped 

Ausgabe von ldd <filename>:

root@swat:~/Downloads# ldd ./talisman  not a dynamic executable 

Ausgabe von ls /lib:

root@swat:~# ls /lib console-setup init startpar cpp klibc-k3La8MUnuzHQ0_kG8hokcGAC0PA.so systemd crda ld-linux.so.2 terminfo cryptsetup live udev firmware lsb x86_64-linux-gnu hdparm modprobe.d ifupdown modules 
-2
Diese Fehlermeldung bedeutet, dass es sich nicht um ein Berechtigungsproblem handelt, sondern möglicherweise um eine fehlende Abhängigkeit, z. B. eine gemeinsam genutzte Bibliothek. Bearbeiten Sie Ihren Post und fügen Sie die Ausgabe aus der Shell-Kommando-Datei hinzu`,` ldd `und` ls / lib`. sawdust vor 6 Jahren 1
Dies ist wahrscheinlich ein Dup von https://superuser.com/a/375290/112397 Employed Russian vor 6 Jahren 0
@sawdust, bearbeitete die Frage wie gewünscht mit der Ausgabe. Entschuldigung, ich brauchte Zeit, um zurückzukehren. warfreak92 vor 6 Jahren 0

2 Antworten auf die Frage

1
Niklas Rosencrantz

Es gibt mehrere Fälle, in denen Sie die Meldung "Keine solche Datei oder ein solches Verzeichnis" erhalten können:

  • Die Datei existiert nicht. Dies ist hier nicht der Fall.

  • Es gibt eine Datei mit diesem Namen, aber es ist ein symbolischer Link. Das chmod +x ./filenamehätte einen Fehler ausgegeben, wenn dies der Fall wäre.

  • Die Datei ist eine dynamisch verknüpfte ELF-Datei, und der zur Ausführung erforderliche Programminterpreter ist nicht vorhanden.

    Verwenden readelf -l filename | grep interpreterSie diese Option, um herauszufinden, welcher Programminterpreter erforderlich ist, und überprüfen Sie, ob er vorhanden ist und über die richtigen Berechtigungen verfügt.

  • Die Datei existiert, und Sie können sie sogar lesen, aber wenn Sie versuchen, sie auszuführen, wird Ihnen mitgeteilt, dass sie nicht existiert.

Der file -L filenameBefehl sagt Ihnen genau, was diese Binärdatei ist.

Ich kann keine ausführbare 32-Bit-Linux-Datei finden, um dies zu versuchen, aber vielleicht können Sie den fileBefehl einfach ausführen und überprüfen, ob die Datei 32-Bit oder 64-Bit ist. Auf einem 64-Bit-System ist möglicherweise eine 32-Bit-Binärdatei installiert, auf der keine 32-Bit-Unterstützung installiert ist (dies ist der Spezialfall "Programminterpreter fehlt").

0
warfreak92

Das löst es.

root@swat:~/Downloads# readelf -l ./talisman | grep interpreter [Requesting program interpreter: /lib/ld-linux.so.2] 

Dann habe ich mit dem folgenden Befehl nach den fehlenden Bibliotheken gesucht:

root@swat:~/Downloads# ldd /bin/ls linux-vdso.so.1 (0x00007ffe9a971000) libselinux.so.1 => /lib/x86_64-linux-gnu/libselinux.so.1  (0x00007fe90a8a7000) libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fe90a50a000) libpcre.so.3 => /lib/x86_64-linux-gnu/libpcre.so.3 (0x00007fe90a297000) libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fe90a093000) /lib64/ld-linux-x86-64.so.2 (0x000056083d3b2000) libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0  (0x00007fe909e76000) 

Dies bestätigt, dass ich keine gebrochenen symbolischen Links für diese Bibliothek habe und dass die Bibliothek, in die (/lib/ld-linux.so.2)sie geladen wird, nicht gefunden wird /bin/ls.

Durch die Ausgabe dieses Problems wird das Problem behoben:

sudo apt-get install libc6-i386 lib32stdc++6 lib32gcc1 lib32ncurses5 lib32z1