저는 현재 기존 Linux 시스템(현재 Ubuntu)에 다양한 프로그램을 설치하고 설정하기 위한 bash 스크립트를 작성하고 있습니다. 프로그램을 설치하고 높은 권한이 필요한 다양한 폴더에 많은 파일을 복사하기 때문에 "높은 권한이 필요합니다"라는 표준을 수행하고 종료했습니다.
그러나 가능하다면 사용자가 sudo를 사용하지 않고 스크립트 명령(예: GUI 파일 관리자에서 실행)을 실행하지 않을 때 사용자에게 sudo 비밀번호를 묻는 메시지를 표시하고 스크립트의 권한을 자동으로 상승시킬 수 있기를 원합니다. 사용자가 스크립트를 다시 시작해야 합니다.
기본 Linux 설치에서 실행되도록 설계되었으므로 시스템 수정 옵션이 제 목적에 맞지 않습니다. 모든 옵션은 스크립트 자체에 포함되어야 합니다.
Bash에서 이것이 가능합니까? 그렇다면 이를 수행하는 가장 좋은(안전하지만 간결한) 방법은 무엇입니까?
답변1
sudo
스크립트에서 직접 실행합니다 .
if [ $EUID != 0 ]; then
sudo "$0" "$@"
exit $?
fi
답변2
스크립트의 첫 번째 줄에 다음을 추가하세요.
[ "$UID" -eq 0 ] || exec sudo bash "$0" "$@"
그래픽 힌트를 선호하는 경우 또는 sudo
로 변경하십시오 gksu
.gksudo
답변3
나는 다음을 추천한다:
#!/bin/bash
if (($EUID != 0)); then
if [[ -t 1 ]]; then
sudo "$0" "$@"
else
exec 1>output_file
gksu "$0 $@"
fi
exit
fi
# some example stuff
ls -l /root
echo "app: $0"
for f; do
echo ">$f<"
done
답변4
visudo
편집 에 사용하는 파일은 sudoers
다음과 같습니다.
- 사용자 줄에서 사용자 이름 옆에 다음을 추가하세요.
그런 다음 저장하십시오.ALL=(ALL) NOPASSWD: ALL
- 사용자가
그는 비밀번호를 입력하지 않고 루트로 로그인합니다.sudo su -