文件肯定存在。嘗試運行時出現“沒有這樣的檔案或目錄”

文件肯定存在。嘗試運行時出現“沒有這樣的檔案或目錄”

這是在 Arch Linux 上。看看這個:

[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

所以它肯定存在。 Ldd 顯示所有函式庫都已連結。文件顯示它是一個 64 位元精靈(我安裝的是 64 位元)。

是什麼賦予了?為什麼我收到「沒有這樣的檔案或目錄」?

答案1

這個命令在 Arch Linux 上為我修復了這個問題,允許我運行 elf 二進位檔案:

sudo pacman -Syy ld-lsb lsb-release

對於其他版本的 Linux,

您應該安裝ld-lsb 封裝(或lsb-compat任何包含的類似套件ld-lsb-x86-64.so.3)或建立一個包裝器/可執行腳本,透過現有的動態連結器啟動您的程式:

#! /bin/sh
/usr/lib64/ld-linux-x86-64.so.2 ./FNPLicensingService "$@"

是什麼賦予了?為什麼我收到「沒有這樣的檔案或目錄」?

這是眾所周知的疣。儘管顯示了二進位檔案的路徑,但錯誤訊息是關於二進位檔案所需的動態連結器/ELF 解釋器不存在,而不是關於二進位檔案本身。

的輸出ldd不會告訴您動態連結器是否確實存在;ldd現在使用「安全路徑」清單中的動態連結器而不是燒錄到二進位檔案中的動態連結器,以防止在ldd隨機二進位檔案上運行的使用者傷害自己。如果二進位檔案的解釋器不存在,它的輸出也會令人困惑和誤導。簡單的例子:

$ 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)

答案2

我認為問題可能是 sudo 僅執行secure_pathin/etc/sudoers或 in $PATHif中指定的目錄中存在的命令secure_path未設定。儘管在這種情況下,通常的錯誤訊息是command not found.

您可以嘗試新增帶有可執行檔的目錄secure_path,看看效果如何。

還要確保該文件設定了可執行位:chmod +x FNPLicensingService

答案3

在谷歌之後,我懷疑這個命令只是拒絕從命令列運行,並偽造該訊息。

https://community.flexera.com/t5/FlexNet-Publisher-Knowledge-Base/How-long-does-FNPLicensingService-normally-stay-running-after/ta-p/5516

問題 因為許可證服務不是 Mac 上的「服務」(我們使用 install_fnp.sh 產生 setuid-root 二進位文件支援 Flex 的應用程式透過我們的庫調用),這就提出了一個問題,在最後一個客戶端斷開連接後,FNPLicensingService 通常會保持運行多長時間?

還有大量警告稱惡意軟體通常與該軟體相關。建議謹慎。

相關內容