2013-04-29 1 views
0

Linux 용 설치 후 스크립트를 만들고 스크립트를 sudoers 파일을 편집하여 사용자가 sudo visudo 할 필요가없고 수동으로 편집해야합니다. 스크립트에서 쉘 스크립트를 통해 sudoers에 sudoers 권한을 추가합니다.

내가 가진 :

if [[ ! `sudo -l -U "$user" 2>&1 | grep "ALL"` ]]; then 
    su -c "echo '$user ALL=(ALL) ALL' >> /etc/sudoers" 
    su -c "echo '$user ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers" 
fi 

이의 문제가 내가 스크립트를 실행 한 후 나는이 출력 얻을 sudo whoami 때입니다 :

는 sudo를 : >>>/등/sudoers : 31 행 근처의 구문 오류 < < < sudo : 31 행 근처의/etc/sudoers에서 구문 분석 오류가 발생했습니다. sudo : 유효한 sudoers 소스를 찾을 수 없습니다. sudo : 정책 플러그인을 초기화 할 수 없습니다.

sudoers 파일을 손상시키지 않고 어떻게합니까?

편집 : 여기에 요청 제의 sudoers 파일로 :이 스크립트를 실행 한 후 cat /etc/sudoers을 할 수 없음을

Defaults env_reset 
Defaults mail_badpass 
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" 

# Host alias specification 

# User alias specification 

# Cmnd alias specification 

# User privilege specification 
root ALL=(ALL:ALL) ALL 

# Members of the admin group may gain root privileges 
%admin ALL=(ALL) ALL 

# Allow members of group sudo to execute any command 
%sudo ALL=(ALL:ALL) ALL 

# See sudoers(5) for more information on "#include" directives: 

#includedir /etc/sudoers.d 

마음입니다.

편집 2 : 이 솔루션은 sudoers 파일이 시사하는 기본의 끝 부분에 주석으로 user=$(whoami)

+0

sudoers 파일의 모습을 보여주는 것이 도움이 될 수 있습니다. –

+0

@ElchononEdelson 안녕하세요. 답장을 보내 주셔서 감사합니다. 나는 포스트를 편집했고 당신은 나의 sudoers 파일을 지금 볼 수있다. 고맙습니다. –

+0

닫기 유권자 : 이것은 좋은 습관이 아니지만,'sudoers'를 프로그래밍 방식으로 조작하는 방법에 대한 질문은 매우 현실적입니다. 여기서는 확실히 IMHO입니다. – tripleee

답변

1

내 솔루션은 사용자에게 암호 입력을 요청하고 예상 값과 함께 사용할 변수에 값을 저장하도록 요청하는 것입니다. 스크립트가 설치되어 있지 않은 경우 기대 설치 후 스크립트가 수행 : 당신이 나쁜 줄을 삭제합니다 때 한 후,

read -p "Please enter your password: " PASSWD 
export PASSWD 
username=$USER 
export username 

if [[ ! `sudo -l -U "$USER" 2>&1 | grep "ALL"` ]]; then 
    expect -c ' 
     spawn "su -c \"cat <<EOF >> /etc/sudoers.d/$env(username) 
      $env(username) ALL=(ALL:ALL) ALL 
      $env(username) ALL=(ALL) NOPASSWD:ALL 
EOF 
\" 
     " 
     expect "Password:\r" 
     send $env(PASSWD) 
     interact 
    ' 
fi 
4

, 당신은 /etc/sudoers.d/에 새 파일을 작성해야합니다으로 $ 사용자를 정의하는 것입니다.

(Debian) 패키지 postinst에서이 작업을 수행하는 것은 어떨까요? user의 가치는 어디서 올까요?

또한이 사용자가 기존 그룹 인 admin 또는 sudoers에 추가 된 특별한 이유가 없습니까?

+0

안녕하세요. sudo apt-get 후 암호를 입력 할 필요없이 물건을 설치할 수 있기를 원합니다 ... –

+0

내가하고있는 것을 볼 수 있고, 당신이 컴피티션에 무엇을하려고하는지 짐작할 수 있지만, 세부 사항 없이는 그렇지 않습니다. 당신이 영리하고 있는지, 아니면 잘못하고 있는지 분명히하십시오. 그것이 당신의 유일한 목표라면, 왜 이것을위한 패키지가 필요한가요? 그리고 다시, 어떻게 그리고 어디서'user'가 정의 되었습니까? – tripleee

+0

$ user는 'user = $ (whoami)'로 정의되어 있으며 누락 된 부분입니다. 고맙습니다. –

0

당신은 을/etc /의 sudoers "pkexec visudo를"를 통해 파일을 편집 할 수 있습니다, sudo는이 될 것입니다 작업.