쉘 스크립트 root 권한으로만 실행되게 하기
리눅스를 관리하다 보면 작업의 자동화를 위해 쉘 스크립트를 쓰는 경우가 아주 많다. 그런데 간혹가다 root
권한으로 쉘 스크립트를 실행할 필요가 있는 경우가 생길 수 있다. 일반적으로 root
권한을 요구하는 쉘 스크립트를 일반 계정으로 실행 할 경우 진행하다 권한 문제로 알아서 막히게 된다. 하지만 이런 식으로 예외처리에 기대는것 보다는, 스크립트 진입점에서 해당 쉘 스크립트를 실행한 계정을 확인해 명시적으로 처리하는 게 관리 차원에서 더 좋다. 다음은 해당 쉘 스크립트를 실행한 계정이 root
계정인지 확인하는 스크립트다.
#!/bin/bash
if [ $EUID -ne 0 ]; then
echo "Please run as root!"
exit
fi
EUID
는 '유효 사용자 ID'라는 의미로 명령어가 실행 되었을 때, 해당 명령어를 실질적으로 실행한 사용자의 UID
가 된다. 참고로 root
계정의 UID
는 0
이다. 일반 계정에서 sudo
명령어로 실행한 경우, 임시적으로 root
의 권한을 빌리게 되므로 root
의 UID
가 EUID
값을 덮어쓰게 된다. 즉 위의 스크립트가 실행되었을 때, EUID
가 root
가 아닌 경우 "Please run as root!"라는 메시지를 터미널에 출력 시키고 그대로 프로세스를 종료해 버린다.