ファイルは確かに存在します。実行しようとすると「そのようなファイルまたはディレクトリはありません」というメッセージが表示されます

ファイルは確かに存在します。実行しようとすると「そのようなファイルまたはディレクトリはありません」というメッセージが表示されます

これは 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 ビット elf であることを示します (私は 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

secure_path問題は、 が設定されていない場合/etc/sudoers、 または で指定されたディレクトリに存在するコマンドのみを sudo が実行することにある$PATHのではないかと思いますsecure_path。ただし、この場合、通常のエラー メッセージは ですcommand not found

実行可能ファイルを含むディレクトリを追加してみてsecure_path、どうなるか確認してみるとよいでしょう。

また、ファイルに実行ビットが設定されていることを確認してください。chmod +x FNPLicensingService

答え3

Google の調査後、このコマンドはコマンド ラインからの実行を拒否し、そのメッセージを偽造しているだけではないかと疑っています。

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 はどのくらいの時間実行され続けるのでしょうか?

このソフトウェアにはマルウェアが関連していることが多いという警告も多数あります。注意が必要です。

関連情報