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