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.

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.


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.


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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.