sudo 비밀번호를 묻는 메시지를 표시하고 bash 스크립트에서 프로그래밍 방식으로 권한을 높이시겠습니까?

sudo 비밀번호를 묻는 메시지를 표시하고 bash 스크립트에서 프로그래밍 방식으로 권한을 높이시겠습니까?

저는 현재 기존 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 -
    
    그는 비밀번호를 입력하지 않고 루트로 로그인합니다.

관련 정보