Estou escrevendo um aplicativo compilado regular que precisa criar um arquivo especial e gravar um cookie mágico nele. Não consigo escrever o arquivo diretamente do aplicativo, o modelo de segurança do sistema exige que eu lance uma ferramenta auxiliar com privilégios elevados para executar o truque. Eu posso fornecer qualquer número de argumentos para a ferramenta auxiliar. Agora eu gostaria de escolher um comando de sistema muito simples que serviria como ferramenta auxiliar e criaria o arquivo para mim. Algo assim:
/bin/sh -c "/bin/echo -n 'magic' > /some/where/file"
O Simple touch
não funciona porque eu preciso gravar o cookie no arquivo, um simples echo
sem o invólucro do shell não funciona, pois ele precisa de redirecionamento para gravar o arquivo. Não me sinto confortável chamando o shell com privilégios de root para executar uma tarefa tão trivial. Existe algum comando do sistema realmente simples e restrito que eu poderia chamar para escrever o arquivo para mim?
tee
. Obrigado!
/bin/sh -c 'echo magic > /path/to/magic/file'
não funciona? Isso seria um arquivo executável e dois argumentos. Você precisaria construir o último argumento como uma string (com sprintf ou equivalente). Existe uma razão para isso não funcionar para você? Na sua pergunta, parece que doCommandAsRoot () não recebe entrada para transmitir ao comando, correto? Caso contrário, você poderá substituir o último argumento por'cat > /path/to/magic/file'
e passar os dados em vez de construir uma string.