Dies ist auf Arch Linux. Schauen Sie sich das an:
[saint-llama@hubs bin]$ lsattr
--------------e----- ./install_fnp.sh
--------------e----- ./toolkitinstall.sh
--------------e----- ./FNPLicensingService
[saint-llama@hubs bin]$ file FNPLicensingService
FNPLicensingService: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-lsb-x86-64.so.3, for GNU/Linux 2.6.18, stripped
[saint-llama@hubs bin]$ ldd FNPLicensingService
linux-vdso.so.1 (0x00007ffcbafd8000)
libdl.so.2 => /usr/lib/libdl.so.2 (0x00007f870ce06000)
librt.so.1 => /usr/lib/librt.so.1 (0x00007f870cdfb000)
libpthread.so.0 => /usr/lib/libpthread.so.0 (0x00007f870cdd9000)
libm.so.6 => /usr/lib/libm.so.6 (0x00007f870cc93000)
libgcc_s.so.1 => /usr/lib/libgcc_s.so.1 (0x00007f870cc79000)
libc.so.6 => /usr/lib/libc.so.6 (0x00007f870cab2000)
/lib64/ld-lsb-x86-64.so.3 => /usr/lib64/ld-linux-x86-64.so.2 (0x00007f870ce60000)
[saint-llama@hubs bin]$ sudo ./FNPLicensingService
sudo: unable to execute ./FNPLicensingService: No such file or directory
Es existiert also definitiv. Ldd zeigt, dass alle Bibliotheken verknüpft sind. Die Datei zeigt, dass es sich um ein 64-Bit-Elf handelt (und ich verwende eine 64-Bit-Installation).
Was ist los? Warum erhalte ich die Meldung „Keine solche Datei oder kein solches Verzeichnis“?
Antwort1
Dieser Befehl hat das Problem unter Arch Linux für mich behoben und ermöglichte mir die Ausführung der Elf-Binärdatei:
sudo pacman -Syy ld-lsb lsb-release
Für andere Linux-Varianten:
Installieren Sie entweder dield-lsb-Paket(oder lsb-compat
ein ähnliches Paket, das enthält ld-lsb-x86-64.so.3
) oder erstellen Sie einen Wrapper/ein ausführbares Skript, das Ihr Programm über den vorhandenen dynamischen Linker startet:
#! /bin/sh
/usr/lib64/ld-linux-x86-64.so.2 ./FNPLicensingService "$@"
Was ist los? Warum erhalte ich die Meldung „Keine solche Datei oder kein solches Verzeichnis“?
Das ist ein bekanntes Problem. Obwohl der Pfad der Binärdatei angezeigt wird, bezieht sich die Fehlermeldung darauf, dass der von der Binärdatei benötigte dynamische Linker/ELF-Interpreter nicht existiert, und nicht auf die Binärdatei selbst.
Die Ausgabe von ldd
sagt Ihnen NICHT, ob der dynamische Linker wirklich existiert; ldd
heutzutage wird ein dynamischer Linker aus einer Liste „sicherer Pfade“ anstelle des in die Binärdatei eingebrannt, um zu verhindern, dass Benutzer, die ldd
zufällige Binärdateien ausführen, sich selbst schaden. Und seine Ausgabe ist auch im Fall von Binärdateien, deren Interpreter nicht existiert, verwirrend und irreführend. Einfaches Beispiel:
$ cp /bin/sh /tmp/sh
$ patchelf --set-interpreter /no/such/file /tmp/sh
$ /tmp/sh
bash: /tmp/sh: No such file or directory
$ ls /tmp/sh
/tmp/sh
$ file /tmp/sh
/tmp/sh: ELF 64-bit LSB ..., interpreter /no/such/file, ...
$ ldd /tmp/sh => /foo/bar => /lib64/ld-linux-x86-64.so.2
...
/no/such/file => /lib64/ld-linux-x86-64.so.2 (0x00007fc60d225000)
Antwort2
Ich denke, das Problem könnte darin liegen, dass sudo nur Befehle ausführt, die in den secure_path
in /etc/sudoers
oder angegebenen Verzeichnissen vorhanden sind, $PATH
wenn secure_path
nicht festgelegt ist. In diesem Fall lautet die übliche Fehlermeldung jedoch command not found
.
Sie könnten versuchen, das Verzeichnis mit einer ausführbaren Datei hinzuzufügen secure_path
und sehen, ob das funktioniert.
Stellen Sie außerdem sicher, dass für die Datei ein Ausführungsbit gesetzt ist:chmod +x FNPLicensingService
Antwort3
Nach Google vermute ich, dass dieser Befehl sich einfach weigert, von der Befehlszeile aus ausgeführt zu werden und diese Meldung vortäuscht.
Frage Da der Lizenzierungsdienst auf einem Mac kein "Dienst" ist (wir verwenden install_fnp.sh, um eine Setuid-Root-Binärdatei zu generieren, diewird von Flex-fähigen Anwendungen über unsere Bibliotheken aufgerufen), wirft die Frage auf, wie lange FNPLicensingService normalerweise weiter ausgeführt wird, nachdem der letzte Client die Verbindung getrennt hat?
Es gibt auch zahlreiche Warnungen, dass mit dieser Software oft Malware verbunden ist. Vorsicht ist geboten.