스크립트의 "sudo -u"는 여전히 사용자 비밀번호를 호출하라는 메시지를 표시합니다.

스크립트의 "sudo -u"는 여전히 사용자 비밀번호를 호출하라는 메시지를 표시합니다.

나는 으로 로그인했고 user1script1 이 script2 를 호출하려고 시도하는 두 개의 스크립트를 가지고 있습니다 sudo -u user2. 내 문제는 user1내가 지정한 옵션에도 불구하고 -u여전히 비밀번호를 입력하라는 메시지가 표시된다는 것입니다 sudo. 이것은 내 설정입니다.

  1. 스크립트 1:

    #! /bin/bash
    
    echo "Current user in script1:" $USER
    
    # Call script2
    sudo -u user2 /full/path/to/script2
    
  2. 스크립트 2:

    #! /bin/bash
    
    echo "Current user in script2:" $USER
    
    # Execute command as user2
    some-command-that-works
    
  3. 내가 가지고 있는 것과 동일합니다 /etc/sudoers:

    # /etc/sudoers
    #
    # This file MUST be edited with the 'visudo' command as root.
    #
    # See the man page for details on how to write a sudoers file.
    #
    
    Defaults        env_reset
    
    # Host alias specification
    
    # User alias specification
    
    # Cmnd alias specification
    
    # User privilege specification
    user1 ALL=(ALL:ALL) ALL
    
    
    # Allow members of group sudo to execute any command
    # (Note that later entries override this, so you might need to move
    # it further down)
    %sudo ALL=(ALL) ALL
    #
    #includedir /etc/sudoers.d
    
    # Don't ask for user2 password for script2
    user2 ALL= NOPASSWD: /full/path/to/script2
    
    # FYI: I experimented with the line below for group1 that user1 is a member of
    %group1 ALL= NOPASSWD: /full/path/to/script2
    
  4. ls -blah산출

    drwxrwsr-x 2 user1 group1 4.0K Oct 19 15:22 .
    drwxrwsr-x 7 user1 group1 4.0K Oct 18 18:48 ..
    -rwxrwxr-x 1 user1 group1  180 Oct 20 17:37 script1
    -rwx------ 1 user2 group1  166 Oct 20 16:29 script2
    

실행하려는 쉘의 예 script1:

user1@host1 /full/path/to/script1 $ script1
Current user in script1: user1
[sudo] password for user1:

편집하다:이것은 내가 사용하여 연결하는 서버에 있습니다 ssh. 서버가 Debian 6.0.4를 실행 중입니다.Squeeze

답변1

sudo -u <user>지정된 사용자로서 명령을 실행할 수 있는 사용자 권한을 부여합니다.

su - <user>특정 사용자로 전환하는 것과는 다릅니다. su - <user>해당 사용자로 세션을 열려면 특정 사용자의 비밀번호를 입력해야 합니다.

sudo -u <user>NOPASSWD:sudoers 파일에 이 플래그가 제공 되지 않는 한 현재 사용자 비밀번호가 필요합니다 .

원하는 것을 얻으려면 이것을 sudoers 파일에 추가하십시오.

%group1 ALL=(user2) NOPASSWD: /full/path/to/script2

이렇게 하면 group1이 비밀번호를 입력하지 않고도 user2로 script2를 실행할 수 있습니다.

관련 정보