다시 한번 나는 시스템의 이상한 동작을 발견했습니다. 저는 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
이를 시스템에 대한 요청으로 호출하여 실행하면 시스템 interpreter
은 path/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