사용자를 루트로 변경하고 쉘 스크립트에서 나머지 명령을 루트로 실행했습니다.
답변1
현재가 0인지 확인 uid
하고 그렇지 않은 경우 스크립트를 루트로 다시 실행합니다.
[[ $UID = 0 ]] || exec sudo $0 "$@"
예를 들어 스크립트의 두 번째 줄(뒤 "#!/bin/bash"
)을 작성하면 요청된 작업이 수행됩니다.
원래 사용자가 필요하지 않은 긴 섹션이 시작 부분에 있는 경우 if 문을 사용하여 이를 수행합니다.
#!/bin/bash
if [[ $UID = 0 ]]
then
: do privileged stuff
else
: do unprivileged stuff
exec sudo $0 "$@"
fi
이 $UID
값은 bash에만 적용됩니다(질문에 태그가 지정되었기 때문에 사용됨 bash
). 보다 이식성이 뛰어난 스크립트는 id
.
답변2
setuid 비트를 사용할 수도 있습니다.