Bash를 사용 source
하면 실행 비트 세트없이 스크립트를 실행할 수 있습니다. 이것은 문서화되고 예상되는 동작이지만 실행 비트 사용에 반대하지 않습니까?
나는 그것이 source
서브 쉘을 생성하지 않는다는 것을 안다 .
Bash는 통역사입니다. 입력을 받아들이고 원하는대로 수행합니다. 실행 가능한 비트에주의 할 필요가 없습니다. 실제로 Bash는 이식 가능하며 실행 가능한 비트 개념이없는 운영 체제 및 파일 시스템에서 실행할 수 있습니다.
실행 가능한 비트에 대해 신경 쓰는 것은 운영 체제 커널입니다. exec
예를 들어 Linux 커널이를 수행 할 때 파일 시스템이 noexec
옵션으로 마운트되지 않았 는지 확인하고 프로그램 파일의 실행 가능 비트를 확인하고 보안 모듈 (예 : SELinux 또는 AppArmor)에 의해 부과 된 모든 요구 사항을 적용합니다.
실행 가능 비트는 다소 임의적 인 종류의 제어입니다. 예를 들어 Linux x86-64 시스템에서는 인터프리터로 명시 적으로 호출/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2
하여 실행 가능한 비트에 대한 커널의 확인을 우회 할 수 있습니다 .
cp /bin/ls /tmp/
chmod -x /tmp/ls
/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2 /tmp/ls
이것은 ld.so
인터프리터이고 실행되는 코드가 ELF 형식의 기계 코드라는 점을 제외하면 Bash에서 Bash 소스 코드를 소싱하는 것과 다소 유사 합니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다