Pergunta

Quero que um processo com privilégios de usuário (não root) inicie novos processos como usuário nobody.Eu tentei uma ligação direta para setuid que falha com -1 EPERM sobre Ubuntu 8.04:

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

int main() { 
       setuid(65534);
       while (1);
       return 0;
}

Como devo fazer isso?

Foi útil?

Solução

Você vai requerem assistência e muita confiança do administrador do sistema.Usuários comuns não são capazes de executar o executável de sua escolha em nome de outros usuários, ponto final.

Ela pode adicionar sua inscrição a /etc/sudoers com as configurações adequadas e você poderá executá-lo como sudo -u nobody.Isso funcionará tanto para scripts quanto para executáveis ​​binários.

Outra opção é que ela faça chown nobody e chmod +s em seu executável binário e você poderá executá-lo diretamente.Esta tarefa deve ser repetida sempre que seu executável for alterado.

Isso também pode funcionar para scripts se você criar um pequeno executável auxiliar que simplesmente faça exec("/home/you/bin/your-application").Este executável pode ser transformado em suid-nobody (veja acima) e você pode modificá-lo livremente your-application.

Outras dicas

Até onde eu sei, você não pode, a menos que seja root ou tenha o sudo configurado para permitir a troca de usuários.Ou você pode fazer com que seu executável tenha o bit suid configurado e não seja de propriedade de ninguém.Mas isso também requer acesso root.

O usuário 'ninguém' ainda é um usuário.Não tenho certeza de qual é o seu raciocínio ao fazer o programa ser executado como ninguém, pois isso não adicionará nenhuma segurança adicional.É mais provável que você se abra para outros problemas.

Eu seguiria a recomendação do squadette de usar um aplicativo auxiliar.

calife é uma alternativa para sudo.

Calife é um pequeno programa que permite que um administrador de sistema UNIX se torne root (ou outro usuário) em suas máquinas sem fornecer a senha de root, mas a sua própria.

Eu corri pelo setuid-sandbox projeto hoje enquanto leio LWN, que faz o que procuro da maneira correta.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top