/lib64/ld-linux-x86-64.so.2는 무엇이며 왜 파일을 실행하는 데 사용할 수 있나요?

/lib64/ld-linux-x86-64.so.2는 무엇이며 왜 파일을 실행하는 데 사용할 수 있나요?

최근에 파일에 실행 권한이 없으면 /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.soELF 공유 라이브러리를 사용하는 실행 파일의 특수 지침은 시스템의 프로그램 로더에 이 파일에서 도우미 프로그램을 로드하도록 지시합니다. 이 도우미는 프로그램 실행 파일에 필요한 공유 라이브러리를 로드하고 프로그램 실행을 준비한 다음 실행합니다. 명령줄에서 직접 이 도우미를 호출하여 ELF 실행 파일을 로드하고 실행할 수 있습니다. 이는 파일 자체를 실행하는 것과 같지만 항상 실행하는 실행 파일이 아닌 지정한 파일의 도우미를 사용합니다. 이는 주로 유지관리자가 실행할 의도가 없는 새 버전의 도우미를 테스트하기 위한 것입니다.

링커는 동적으로 연결된 프로그램을 실행하는 데 사용됩니다. 을 실행하면 커널은 실제로 수동으로 수행하는 것과 chmod동일한 작업을 실행합니다 . 후자는 실행 권한 확인이 실행하라는 파일에 대한 시스템 호출을 통해 수행되므로 바이너리가 실행 가능하지 않더라도 작동합니다. 셸 명령줄 에서 셸에 전달되는 경로는 대신 실행 권한을 확인하고 링커에 인수로만 전달되는 경로입니다. 실행 파일이 필요하지 않은 경우에도 마찬가지입니다 ./lib64/ld-linux-x86-64.so.2 /bin/chmodchmodexecve()/lib64/ld-linux-x86-64.so.2 /bin/chmodexecve()/lib64/ld-linux-x86-64.so.2/bin/chmod/bin/chmod/bin/sh ./some-script./some-script

이에 대한 자세한 내용은 훌륭한 기사에서 확인할 수 있습니다.프로그램 실행 방법: ELF 바이너리기사.

관련 정보