'sudo -u' no script ainda solicita a invocação da senha do usuário

1

Estou logado como user1 e tenho dois scripts, script1 tenta chamar script2 usando sudo -u user2 . Meu problema é que ainda sou solicitado a digitar a senha para user1 , embora eu esteja especificando a opção -u para sudo . Aqui está minha configuração:

  1. Script1:

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

    #! /bin/bash
    
    echo "Current user in script2:" $USER
    
    # Execute command as user2
    some-command-that-works
    
  3. Equivalente /etc/sudoers ao que eu tenho:

    # /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 output

    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
    

Um exemplo da tentativa do meu shell de executar script1 :

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

Editar: Isso está em um servidor ao qual me conecto com ssh . O servidor está executando o Debian 6.0.4 Squeeze

    
por mbadawi23 21.10.2017 / 19:29

1 resposta

5

sudo -u <user> concede ao usuário permissão para executar um comando como o usuário especificado.

Não é o mesmo que su - <user> , que alterna para o usuário especificado. su - <user> exige que você insira a senha do usuário para abrir uma sessão como esse usuário.

sudo -u <user> requer a senha atual dos usuários, a menos que o NOPASSWD: flag seja fornecido no arquivo sudoers.

Para obter a funcionalidade desejada, adicione isso ao arquivo sudoers

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

Isso permitirá que o group1 execute script2 como user2 sem inserir uma senha.

    
por 21.10.2017 / 19:44