Restringir usuário a executar o comando sudo específico

2

Aqui está um script:

#!/bin/bash

user='my_sudo_user'
sudo -lU $user

Eu estava tentando limitar meu non_sudo_user para ter a capacidade de executar esse script. Usando visudo , tentei:

non_sudo_user ALL=(ALL) NOPASSWD: /bin/bash /full/path/script.sh
non_sudo_user ALL=(ALL) NOPASSWD: /usr/bin/sudo -lU
non_sudo_user ALL=(ALL) NOPASSWD: /usr/bin/sudo -lU *   # unsafe

Nenhum deles funciona. Eu recebo esta mensagem:

Sorry, user non_sudo_user is not allowed to execute 'list' as my_sudo_user on host123.

Mas eu forneci -l no arquivo sudoer .

O que posso fazer? Este é o Ubuntu, a propósito.

EDITAR :

Na verdade, eu corro este script:

for u in $(awk -F'[/:]' '{if($3>=1000&&$3!=65534) print $1}' /etc/passwd); do sudo -lU $u ; done

Portanto, não tenho uma lista definitiva de usuários antes do tempo.

    
por CppLearner 20.04.2017 / 19:05

2 respostas

0

EDITAR: reescrita completa depois que o OP forneceu mais informações.

Especifique o usuário em / etc / sudoers como tendo permissão para executar /usr/sbin/sudo .

Isso permitirá que eles executem o comando sudo, mas eles não terão permissões para executar outros comandos.

Acabei de testar isso no CentOS-7.3.1611 com uma nova conta de usuário:

testusr ALL=(ALL) NOPASSWD: /usr/sbin/sudo

Não sei se há alguma implicação de segurança ao especificar o próprio comando sudo na lista de comandos permitidos Revise e teste antes de confiar nisto em um ambiente de produção ... pode ser inseguro.

    
por 20.04.2017 / 19:32
0

Acho que você só pode listar os comandos que um usuário diferente pode executar se você puder executar comandos arbitrários como (ALL) esse usuário. Então, ao invés disso ...

Em sudoers:

non_sudo_user ALL=(ALL) NOPASSWD: /usr/bin/sudo -l

E para listá-los, executando como non_sudo_user :

for target_user in user1 user2 user3... ; do
    sudo -u "$target_user" sudo -l
done
    
por 20.04.2017 / 19:52