스크립트나 스크립트의 일부분을 제한된 모드로 동작시키는 것은 제한이 없을 경우에 쓸 수 있는 몇몇 명령어들을 쓰지 못하게 합니다. 보안상의 이유로, 스크립트 사용자의 권한을 제한시키고 스크립트를 돌려서 입을 수 있는 가능한 피해를 최소화해 줍니다.
cd로 작업 디렉토리를 바꾸기.
$PATH나, $SHELL, $BASH_ENV, $ENV 환경 변수의 값을 바꾸기.
쉘 환경 변수 옵션인 $SHELLOPTS을 읽거나 바꾸기.
출력 재지향.
/'s을 포함한 하나 이상의 명령어 실행.
쉘에서 다른 프로세스로 옮겨가기 위해서 exec 부르기.
불순한 목적으로 장난을 칠 수 있거나 스크립트를 뒤집어 엎을 수 있는 다양한 명령어들.
스크립트에서 제한된 모드를 빠져나기는 행위.
예 21-1. 제한된 모드로 스크립트 돌리기
#!/bin/bash # 스크립트 시작부분을 "#!/bin/bash -r" 로 해 주면 # 전체 스크립트가 제한된 모드에서 동작합니다. echo echo "디렉토리를 바꾸겠습니다." cd /usr/local echo "지금은 `pwd` 에 있습니다." echo "집(home)으로 돌아갑니다." cd echo "지금은 `pwd` 에 있습니다." echo # 여기까지는 특별한 게 없는 제한되지 않은 모드였습니다. set -r # set --restricted 도 같은 효과를 가져옵니다. echo "==> 지금부터는 제한된 모드로 동작합니다. <==" echo echo echo "제한된 모드에서 디렉토리를 바꾸려고 합니다." cd .. echo "아직도 `pwd` 에 있군요." echo echo echo "\$SHELL = $SHELL" echo "제한된 모드에서 쉘을 바꾸려고 합니다." SHELL="/bin/ash" echo echo "\$SHELL= $SHELL" echo echo echo "제한된 모드에서 출력을 재지향 하려고 합니다." ls -l /usr/bin > bin.files ls -l bin.files # 파일이 생성됐는지 어떤지 한 번 봅시다. echo exit 0 |