내 우분투 컴퓨터에서 작동하는 bash 스크립트를 작성했습니다. 이제 이 스크립트가 내 사용자로 실행되는 것을 방지하고 루트(sudo)로만 실행하고 싶습니다.
이것을 강제하는 것이 가능합니까? 내 사용자 이름으로 스크립트를 실행하면 스크립트가 루트 권한을 요청하도록 할 수 있나요?
답변1
bash
이 목적을 위한 표준 기능이 있습니다 .
# Check if we're root and re-execute if we're not.
rootcheck () {
if [ $(id -u) != "0" ]
then
sudo "$0" "$@" # Modified as suggested below.
exit $?
fi
}
아마도 더 우아한 방법이 있을 것입니다(나는 이 글을 오래 전에 썼습니다!). 그러나 이것은 나에게 잘 작동합니다.
스크립트에서 이 함수를 일관되게 사용하려면 스크립트가 원래 받은 인수를 전달해야 합니다.
사용법: ( 매개변수는 rootcheck 함수 rootcheck "${@}"
에만 rootcheck
전달되지 않습니다 .)
답변2
나는 스크립트 상단에 쉽게 복사하여 붙여넣을 수 있는 이 한 줄 버전을 사용하고 있습니다.
[ `whoami` = root ] || { sudo "$0" "$@"; exit $?; }
답변3
sudo chown root yourcode
sudo chmod 500 yourcode
바라보다!
답변4
루트만 실행할 수 있도록 권한을 변경할 수 있습니다. 또는 whoami
루트가 아닌 경우 명령을 사용하여 sudo를 강제 실행할 수 있습니다.