Maneiras de executar o comando shell como root?

3

Estou desenvolvendo um aplicativo que será executado em uma instância do Amazon EC2 e execute determinados comandos que exigem acesso root. O problema é que diferentes VMs dão acesso root de diferentes maneiras. Por exemplo. algumas VMs dão acesso direto à conta root, enquanto outras simplesmente permitem o acesso padrão de usuários não-root ao sudo.

Agora, posso resolver facilmente o exemplo acima, adicionando uma opção para acrescentar "sudo" a todos os comandos. No entanto, eu não estou muito familiarizado com o unix e gostaria de saber se há outras maneiras de obter privilégios de root para os quais eu deveria preparar meu programa. Su e sudo são razoavelmente suficientes?

    
por suszterpatt 11.07.2011 / 20:00

3 respostas

1
  • Os sistemas de arquivos POSIX geralmente implementam os bits setuid / setgid. Isso nunca é recomendado porque dificilmente pode ser feito seguro, mas funciona:

.

  cp /usr/bin/id /tmp/rootid
  sudo chown root /tmp/rootid
  sudo chmod u+s /tmp/rootid
  /tmp/rootid

observe atentamente o campo euid

  • sudo e su trabalho; Cuidado com as interações sudo -E ou su - com os ambientes. Talvez seja melhor envolver explicitamente todas as suas su chamadas com env -i para serem isoladas do dano

  • O Solaris tem RBAC allthough O OpenSolaris costumava ter um pacote sudo para compatibilidade

por 11.07.2011 / 22:04
1

Se você estiver tentando executar um comando a partir de um script, passe a opção -t para ssh:

ssh -i file.pem -t myhost “sudo -n myscript”

A opção -n para o sudo impedirá que o sudo solicite uma senha; Se o comando exigir uma senha, você receberá um erro.

Funcionou para acessar instâncias do EC2.

    
por 31.03.2012 / 00:22

Tags