Como adicionar um arquivo ao /etc/sudoers.d/ de um usuário não-root?

1

Estou tentando escrever um script para o Centos 6.8, onde o usuário não será root. Não há admin no local, portanto, o script precisa ser adicionado aos sudoers (adicionando um arquivo ao /etc/sudoers.d) pelo mesmo script.

Parece que o usuário deve ser solicitado pelo script para a senha raiz, certo? Se não, qual é a convenção para contornar isso (além de ter um segundo script para adicionar aos sudoers quando o usuário é executado a partir do root)?

Eu tentei algo nos moldes disso:

echo 'foobar ALL=(ALL:ALL) ALL' | sudo EDITOR='tee -a' visudo

e isso:

ALL=NOPASSWD:/usr/bin/rsync" | (sudo su -c 'EDITOR="tee" visudo -f /etc/sudoers.d/rsync')

como sugerido aqui , mas estes apenas dê um prompt de continuação.

Minha pergunta básica é como solicitar a senha e usá-la para dar ao usuário permissão para executar o script.

A outra opção é executar o script como root, mas gostaria de ver se posso fazer o contrário.

    
por Jack BeNimble 30.08.2018 / 05:16

1 resposta

0

Se você quiser apenas solicitar uma senha para elevar os privilégios, adicione

sudo -v

na linha antes disso. O script parará, solicitará a senha e continuará assim que uma senha aceitável for digitada ou sairá se a verificação de senha falhar.

Efetivamente:

#!/bin/bash

# Initiate sudo session
sudo -v
# Execute command; sudo session for tee is already active.
echo 'foobar ALL=(ALL:ALL) ALL' | sudo EDITOR='tee -a' visudo

Se este for um script de longa duração, considere tornar isso uma função executada no início:

sudo -v
while true;
do
    sudo -n true
    sleep 60
    kill -0 "$$" || exit
done 2>/dev/null &

Seu script se parecerá com algo assim:

#!/bin/bash

sudoChk () {
    sudo -v
    while true;
    do
        sudo -n true
        sleep 60
        kill -0 "$$" || exit
    done 2>/dev/null &
}

sudoChk
#...long running commands...
echo 'foobar ALL=(ALL:ALL) ALL' | sudo EDITOR='tee -a' visudo
exit 0

Você também pode estar procurando:

sudo sh -c

em vez de

sudo su -c
    
por 30.08.2018 / 06:40

Tags