마운트 할 때 NOEXEC 플래그를 이해하려고합니다.
/ tmp 디렉토리가 ‘/’와 다른 드라이브에 마운트되어 있고 NOEXEC가있는 atm에 액세스 할 수없는 다른 기계의 / tmp 디렉토리 내에 실행 문제가 있습니다. 내 컴퓨터에서이 시나리오를 시도하고 다시 만들고 싶었지만 두 번째 하드 드라이브가 없습니다. 다음 명령을 시도했습니다.
mount --bind /test1 /test2
그런 다음 bind플래그 를 제거하고 NOEXEC/ etc / fstab에 추가 했습니다. 그런 다음 / test2에 test.sh라는 파일을 만들어 ‘hello world’만 에코합니다. 나는 그것을 시도하고 실행하고 ‘권한이 거부되었습니다’라고 말했습니다. 그런 다음 chmod 777 test.sh실행하고 파일을 정상적으로 실행할 수있었습니다. NOEXEC 플래그가 아무것도 실행하지 않아야한다고 생각 했습니까?
가 mount --bind /test1 /test2완전히 다른 물리적 드라이브 설치와 동일하지? / test1과 / test2에서와 같이 다른 드라이브에 있습니까?
답변
mount명령의 옵션 ‘NOEXEC’플래그 는 마운트 된 파일 시스템 1 에서 실행 가능 바이너리를 실행할 수 없습니다 . 그러나 스크립트 (she-bang 줄로 시작하는 텍스트 파일, 즉으로 시작하는 줄 #!)가 일부 셸 (bash)에 제공되면 해당 줄에 이름이 지정된 실행 파일 (예 :)을 실행 /usr/bin/perl하고 첫 번째 인수로 쉘 스크립트의 경로. 실제 인터프리터가 해당 마운트 포인트에 없을 수 있습니다. 
__________ 
1 이 mount명령은 일반적으로 파일 시스템을 마운트 합니다 . 루프백 또는 bind마운트는이 일반성에 대한 예외로 간주 될 수 있습니다. 일부 경우 (예 🙂 /tmp이 파일 시스템에는 하나의 디렉토리 만 포함됩니다.