Como permitir que um usuário execute um script de propriedade do root? Setuid parece não funcionar mais [duplicado]

4

Eu tenho alguns scripts bash que eu uso com o usuário 'root' para gerenciar regras de iptable.

O problema é que eu quero essas coisas ao mesmo tempo:

  • O script deve ser de propriedade de root
  • As permissões devem ser de 700
  • Eu quero ter um binário executável que determinado usuário possa executar. Este executável executará o script mencionado como root.

Isso costumava funcionar e ainda é o que eu uso em distribuições mais antigas:

#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>

int main()
{
   setuid(0);
   system("/root/iptables/my-iptables-script.sh");

   return 0;
}

Então eu compilo isso e uso sudo chown root e sudo chmod 4777 . Dessa forma, o usuário pode agora executar o binário e executar o script de propriedade do root.

Mas agora eu instalei o Ubuntu 13.10 e quando executo aquele binário eu recebo "permissão negada" para o script.

É possível que algo tenha mudado a esse respeito desde 12.04?

O que posso fazer?

    
por ChocoDeveloper 26.02.2014 / 22:38

1 resposta

5

A solução mais fácil e mais limpa é provavelmente usar sudo .

Você pode configurá-lo para permitir que um determinado grupo unix execute exatamente esse script como root.

%iptablegroup ALL = (root) NOPASSWD: /path/to/script 

Então tudo o que você precisa fazer é adicionar os usuários necessários ao grupo e tudo deve ficar bem.

    
por 26.02.2014 / 23:17