최근에 파일에 실행 권한이 없으면 /lib64/ld-linux-x86-64.so.2
.
예를 들어 x 권한을 복원하려면
-rw-r--r-- 1 root root 59K Mar 1 2017 /bin/chmod
우리는 달릴 수 있어
/lib64/ld-linux-x86-64.so.2 /bin/chmod +x /bin/chmod
이게 어떻게 이루어지는지 정말 모르겠습니다. 흔한 일도 아니고 약간 신비스럽기도 합니다.
답변1
이것은 동적 링커입니다; 단독으로 실행하면, 그것이 무엇을 하는지 알려줄 것입니다:
용법:
ld.so [OPTION]... EXECUTABLE-FILE [ARGS-FOR-PROGRAM...]
공유 라이브러리 실행 파일에 대한 도우미 프로그램인 "ld.so"를 호출했습니다. 프로그램은 일반적으로 파일에 있으며
/lib/ld.so
ELF 공유 라이브러리를 사용하는 실행 파일의 특수 지침은 시스템의 프로그램 로더에 이 파일에서 도우미 프로그램을 로드하도록 지시합니다. 이 도우미는 프로그램 실행 파일에 필요한 공유 라이브러리를 로드하고 프로그램 실행을 준비한 다음 실행합니다. 명령줄에서 직접 이 도우미를 호출하여 ELF 실행 파일을 로드하고 실행할 수 있습니다. 이는 파일 자체를 실행하는 것과 같지만 항상 실행하는 실행 파일이 아닌 지정한 파일의 도우미를 사용합니다. 이는 주로 유지관리자가 실행할 의도가 없는 새 버전의 도우미를 테스트하기 위한 것입니다.
링커는 동적으로 연결된 프로그램을 실행하는 데 사용됩니다. 을 실행하면 커널은 실제로 수동으로 수행하는 것과 chmod
동일한 작업을 실행합니다 . 후자는 실행 권한 확인이 실행하라는 파일에 대한 시스템 호출을 통해 수행되므로 바이너리가 실행 가능하지 않더라도 작동합니다. 셸 명령줄 에서 셸에 전달되는 경로는 대신 실행 권한을 확인하고 링커에 인수로만 전달되는 경로입니다. 실행 파일이 필요하지 않은 경우에도 마찬가지입니다 ./lib64/ld-linux-x86-64.so.2 /bin/chmod
chmod
execve()
/lib64/ld-linux-x86-64.so.2 /bin/chmod
execve()
/lib64/ld-linux-x86-64.so.2
/bin/chmod
/bin/chmod
/bin/sh ./some-script
./some-script
이에 대한 자세한 내용은 훌륭한 기사에서 확인할 수 있습니다.프로그램 실행 방법: ELF 바이너리기사.