Sto scrivendo una normale applicazione compilata che deve creare un file speciale e scrivere un cookie magico in esso. Non riesco a scrivere il file direttamente dall'applicazione, il modello di sicurezza del sistema mi richiede di avviare uno strumento di supporto con privilegi elevati per fare il trucco. Posso fornire qualsiasi numero di argomenti allo strumento di aiuto. Ora vorrei scegliere alcuni comandi di sistema molto semplici che potrebbero servire come strumento di supporto e creare il file per me. Qualcosa come questo:
/bin/sh -c "/bin/echo -n 'magic' > /some/where/file"
Semplice touch
non lo taglia come ho bisogno di scrivere il cookie nel file, un semplice echo
senza il wrapper della shell non funziona in quanto ha bisogno di reindirizzamento per scrivere il file. Non mi sento a mio agio nel chiamare la shell con i privilegi di root per svolgere un compito così banale. Esiste un comando di sistema veramente semplice e vincolato che potrei chiamare per scrivere il file per me?
tee
. Grazie!
/bin/sh -c 'echo magic > /path/to/magic/file'
non funziona? Sarebbe un file eseguibile e due argomenti. Dovresti creare l'ultimo argomento come stringa (con sprintf o equivalente). C'è una ragione per cui questo non funzionerebbe per te? Dalla tua domanda sembra che doCommandAsRoot () non accetta input per lo streaming del comando, giusto? Altrimenti potresti sostituire l'ultimo argomento con'cat > /path/to/magic/file'
e passare i dati invece di costruire una stringa.