CD/DVD 미디어에서 스크립트를 실행하기 위해 sh를 사용해야 하는 이유는 무엇입니까?

CD/DVD 미디어에서 스크립트를 실행하기 위해 sh를 사용해야 하는 이유는 무엇입니까?

다시 한번 나는 시스템의 이상한 동작을 발견했습니다. 저는 Debian 6.0.6을 실행하고 있는데 CD/DVD에서 직접 스크립트를 실행하는 데 문제가 있습니다. 마지막으로 다음을 사용해야 했습니다.

sh /media/cdrom/command

그것을 실행합니다. sh에 의지해야 하는 게 뭐가 그리 큰가요? 스크립트가 bash 기능에 의존한다면 어떻게 될까요? 제 생각에는 정말 짜증나고 보안에 많은 도움이 되지 않습니다.

이 행동에 대한 타당한 이유를 아는 사람이 있습니까?

추신: ./...를 사용하여 직접 실행하려고 하면 문제에 대한 단서를 제공하지 않는 오류가 발생합니다(파일 시스템이 noexec로 마운트됨).

bash: ./media/cdrom/command: No such file or directory

bash /media/cdrom/command로 실행하면 동일한 오류가 발생합니다(명령줄에서 인수로 전달된 명령의 경우에도 설치 옵션의 유효성 검사는 bash에서도 확인된다고 생각합니다.

영구적인 해결책은 /etc/fstab의 마운트 옵션에 exec를 추가하는 것입니다. 예를 들면 다음과 같습니다.

/dev/scd0       /media/cdrom0   udf,iso9660 user,noauto,exec     0       0

답변1

파일 시스템은 일반적 noexec,nosuid으로 보안 강화를 위해 기본적으로 마운트됩니다. 따라서 파일 세트에 실행 가능한 비트가 보이더라도 커널은 이를 실행하는 것을 거부합니다. interpreter path/to/script이를 시스템에 대한 요청으로 호출하여 실행하면 시스템 interpreterpath/to/script인수를 수신하고 구문 분석하여 파일 시스템에 의해 부과된 제한을 우회합니다(컴파일된 실행 파일을 사용하여 동일한 효과를 얻을 수 있습니다) /lib/ld-linux.so.1 path/to/executable.

그래서 하나의 옵션은 입니다 mount -o exec .... /etc/fstab일반적으로 defaults옵션을 로 대체하여 옵션을 넣을 수 있습니다 defaults,exec. 그러나 실제로 수행 중인 작업을 알지 않는 한 이 작업을 수행하지 않는 것이 좋습니다.

BASH의 세부 사항에 관해서는 . 로 bash실행되더라도 sh.bash path/to/script

답변2

이것은 게임에 조금 늦었지만 제가 가진 질문에 대한 답변을 찾는 동안 이것을 발견했고 다른 사람들이 검색하는 데 도움이 될 것이라고 생각했습니다. 우리의 쉘 스크립트는 Windows PC에서 CD로 구워지고 Redhat 상자에 설치 되면 rw-rw-r--. r-xr-xr-x대상 컴퓨터에 설치하면 권한이 동일한 것으로 나타나므로 그냥 실행합니다./mnt/cdrom/install.sh

관련 정보