configuração refinada de sudoers (argumentos de linha de comando permitidos)

20

existe uma maneira direta de permitir que um usuário execute (por exemplo)

/usr/bin/pacman -S -u

como root, sem permitir que ele corra

/usr/bin/pacman -S -u some_package

?

A linha

user ALL=(root) NOPASSWD: /usr/bin/pacman -S -u

permite ambos e

user ALL=(root) NOPASSWD: /usr/bin/pacman -S -u ""

parece ser semanticamente equivalente.

nisc
fonte

Respostas:

27

Para o seu caso, tente algo como isto:

Cmnd_Alias PACMAN = /usr/bin/pacman -S -u, ! /usr/bin/pacman -S -u some_package
user ALL=(root) NOPASSWD: PACMAN

Você pode usar padrões shell glob como [az], [0-9], * etc. no seu arquivo sudoers para excluir pacotes que correspondam a um determinado padrão.

matthias krull
fonte
3

Escreva um script que faça o que você deseja e dê acesso ao sudo.

Além disso, verifique se o ambiente em que ele é executado não tem acesso à rede, ou eles podem usar seu próprio DNS para falsificar o espelho e, em seguida, executar o código arbitrário como root quando ele for instalado pelo pacman.

Daenyth
fonte
isso não é uma maneira elegante, o sudo suportes por padrão o caso exato dado
Matthias Krull
11
Não é a melhor solução, mas +1 para aviso de segurança #
Aaron J Lang