文件肯定存在。尝试运行时出现“没有这样的文件或目录”

文件肯定存在。尝试运行时出现“没有这样的文件或目录”

这是在 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 通常会保持运行多长时间?

还有大量警告称恶意软件通常与该软件相关。建议谨慎。

相关内容