이것은 아치 리눅스에 있습니다. 확인 해봐:
[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_path
지정된 디렉터리에 있는 명령 만 실행한다는 점일 수 있다고 생각합니다. 이 경우 일반적인 오류 메시지는 입니다 ./etc/sudoers
$PATH
secure_path
command not found
실행 파일이 포함된 디렉터리를 추가 secure_path
하고 어떻게 진행되는지 확인할 수 있습니다.
또한 파일에 실행 가능한 비트가 설정되어 있는지 확인하십시오.chmod +x FNPLicensingService
답변3
인터넷 검색 후에는 이 명령이 단순히 명령줄에서 실행을 거부하고 메시지를 위조한 것으로 의심됩니다.
라이센스 서비스가 Mac의 "서비스"가 아니기 때문에 문제가 발생합니다. (우리는 install_fnp.sh를 사용하여 setuid-root 바이너리를 생성합니다.Flex 지원 애플리케이션은 라이브러리를 통해 호출됩니다.), 이는 마지막 클라이언트 연결이 끊어진 후 일반적으로 FNPLicensingService가 얼마나 오랫동안 계속 실행되는지에 대한 질문을 제기합니다.
또한 종종 소프트웨어와 관련된 맬웨어에 대한 수많은 경고도 있습니다. 주의가 필요합니다.