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