É possível forçar um membro do grupo a executar algo permitido pelos sudoers apenas como ele mesmo?

4

A linha de sudoers é

%game_servers   ALL=      NOPASSWD:/usr/bin/renice

que permite aos membros do grupo renice qualquer processo executado por qualquer usuário sem pw, mas eu gostaria de permitir que os membros do grupo renice apenas seus próprios processos, para um valor negativo.

Não consegui identificar a resposta de man sudoers , de onde tive a ideia de alterar ALL=(root:root) para ALL= , o que provou ser uma má ideia

ALL=() é erro de sintaxe.

    
por rautamiekka 01.08.2014 / 00:04

2 respostas

0

Você deseja que os membros do grupo possam apenas renice de seus próprios processos. Esse é o comportamento padrão sem uma entrada sudoers . Por padrão, eles podem renice valor agradável de seus próprios processos dentro do intervalo 0 - 19 .

Ter sudo de acesso a renice permite que eles aumentem esse intervalo de -20 to 19 , bem como renice de processos que não pertencem a eles.

Executando man renice , não vejo opções que permitam fazer o que você deseja fazer. Se os usuários tiverem sudo de acesso ao comando renice , eles poderão adicionar opções a eles que permitirão renice de qualquer processo.

Acho que sua solução é remover a entrada renice no arquivo sudoers . Então, seus usuários podem apenas renice de seus próprios processos. Eles perderão a capacidade de definir seus bons valores para valores entre -20 and -1 , mas esse é o compromisso exigido aqui.

    
por 01.08.2014 / 02:37
0

Use um wrapper em torno de renice , algo como:

#!/bin/sh
priority="$1"
pid="$2"

owner='ps -h -o uid $pid'
if [ $owner != ${SUDO_UID} ]; then
    echo "Only your own processes can be reniced" >&2
    exit 1
fi
renice $priority $pid

Note que o exemplo é frágil e propenso a condições de corrida devido ao atraso entre a verificação de propriedade e a alteração da prioridade.

    
por 02.08.2014 / 02:19

Tags