스크립트에 비밀번호 프롬프트없이 sudo가 필요합니다. 내가 어디로 잘못 갔니?


9

나는 sudo 그룹에 있습니다.

$ id
uid=1002(molot) gid=1002(molot) groups=1002(molot),27(sudo),33(www-data)

내 sudores에서 나는 적절한 설정을 가지고있는 것 같습니다 :

sudo    ALL=(ALL:ALL) NOPASSWD: ALL

그리고 주석이없는 마지막 줄입니다.

git pull그러나을 시도 할 때 비밀번호를 다시 입력해야합니다.

$ sudo -u www-data git --git-dir /var/www/.git --work-tree /var/www pull "origin" master
[sudo] password for molot:

콘솔에 로그인 할 때 문제가되지 않지만 스크립트에서는 허용되지 않습니다. 그렇다면 sudo 그룹의 모든 사람이 암호를 다시 입력하지 않고 www-data로 git pull을 허용하는 방법은 무엇입니까?

내 이름을 직접 입력하면 :

molot ALL=(ALL) NOPASSWD: ALL

그것은 나를 위해 작동합니다. 그러나 sudo 그룹의 marian 또는 다른 사용자에게는 해당되지 않습니다. manual을 이해 하는 한 사용자 이름과 그룹 이름이 첫 번째 파일에서 작동해야합니다.


당신은 할 수 없습니까 sudo -u www-data ./your_script.sh? 스크립트의 목적은 무엇입니까?
jimbobmcgee

@ jimbobmcgee 그것은 git hook이므로 아니오, 나는 그것에 덧붙일 수 없습니다. git 변경을 푸시 한 사용자가 호출했으며 실제로 그 방법을 찾지 못했습니다.
Mołot

첫 번째 필드 ( sudoers파일 형식 에 대한 빠른 이해 가 올바른 경우)는 호출하는 사용자의 사용자 이름입니다. 와일드 카드로 바꾸려고 *했거나 git hook이 실행되는 사용자는 누구입니까?
CVn

@ MichaelKjörling 여기에 명시된 바와 같이 첫 번째 필드에 사용자와 그룹을 모두 쓸 수 있어야합니다. *작동하지 않습니다. 내 이름을 직접 입력하면 나에게 도움이되지만 sudo 그룹의 다른 사용자에게는 그렇지 않습니다.
Mołot

@ MichaelKjörling 감사합니다. 귀하의 의견으로 특수 문자를 찾고 답을 찾을 수있었습니다.
Mołot

답변:


19

sudoers에 관련 줄이있어 캐릭터가 누락 된 것 같습니다 :

sudo ALL = (ALL : ALL) NOPASSWD : ALL

'sudo'라는 사용자와 일치합니다. 'sudo 그룹의 모든 사용자'의 경우 다음과 같아야합니다.

% sudo ALL = (ALL : ALL) NOPASSWD : ALL

(처음에는 % 기호를 참고하십시오).


1
아의 무엇 그래서 %으로는 %wheel의미했다.
nikhil

1

sudo visudo

그런 다음 molot사용자 이름이 있다고 가정하면 파일 끝으로 이동하여 다음을 수행하십시오.

molot ALL=(ALL) NOPASSWD: ALL

그래도 문제가 해결되지 않으면 계속 게시하십시오.


작동합니다. 나를 위해. 그러나 분명히 마리안이나 sudo 그룹의 다른 사용자에게는 해당되지 않습니다.
Mołot

그런 다음 사용자 별명 ( User_Alias)을 작성 하고 특정 명령을 루트 ( Runas_Alias) 로 실행할 수있는 권한을 부여하십시오 . 그룹이 어떻게 구성되어 있는지 잘 모르겠습니다. Sudoers 위키 help.ubuntu.com/community/Sudoers를 확인할 수 있습니다 . 정말 간결합니다. "사용자 사양"섹션을 확인하면 도움이됩니다.
Jugurtha Hadjar
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.