Eu gostaria que meus usuários Unix só pudessem executar um comando específico insecurecommand com uma lista controlada de argumentos armazenados em um arquivo.
A única solução que encontrei neste momento é:
cmdxg
Limite a execução do comando para este grupo:
chown root:cmdxg /.../insecurecommand
chmod 750 /.../insecurecommand
Crie um wrapper setgid, que executa o comando:
ls -al /.../mywrapper
-rwxr-sr-x 1 root cmdxg /.../mywrapper
O único problema é que insecurecommand é executado com gid=cmdxd e não com o usuário real gid. No entanto, gostaria de evitar a execução do comando insecurecommand setgid.
Se no código do wrapper, eu volto para o gid real com seteuid (), ele não pode mais executar o insecurecommand porque o processo perdeu o cmdxg direito.
É uma maneira de executar um comando que precisa de direitos privilegiados de gide, mas com o gid real?
Talvez eu precise decompor a execução do programa?
- > primeiro carregue o binário com o gid eficaz privilegiado - > voltar para o gid real - > execute o programa
Mas como posso fazer isso?
Alguma idéia?
Tags permissions security c setgid setuid