Estoy escribiendo una aplicación compilada regular que necesita crear un archivo especial y escribir una cookie mágica en él. No puedo escribir el archivo directamente desde la aplicación, el modelo de seguridad del sistema requiere que inicie una herramienta auxiliar con privilegios elevados para hacer el truco. Puedo proporcionar cualquier número de argumentos a la herramienta auxiliar. Ahora me gustaría elegir un comando de sistema muy simple que sirva como herramienta auxiliar y crear el archivo para mí. Algo como esto:
/bin/sh -c "/bin/echo -n 'magic' > /some/where/file"
Simple touch
no lo corta, ya que necesito escribir la cookie en el archivo, un simple echo
sin el envoltorio de shell no funciona, ya que necesita una redirección para escribir el archivo. No me siento cómodo llamando al shell con privilegios de root para hacer una tarea tan trivial. ¿Hay algún comando de sistema realmente simple y restringido al que pueda llamar para escribir el archivo por mí?
tee
. ¡Gracias!
/bin/sh -c 'echo magic > /path/to/magic/file'
que no funciona? Eso sería un archivo ejecutable y dos argumentos. Tendría que construir el último argumento como una cadena (con sprintf o equivalente). ¿Hay alguna razón para que esto no funcione para ti? De su pregunta, parece que doCommandAsRoot () no toma datos para transmitir al comando, ¿correcto? De lo contrario, podría reemplazar el último argumento con'cat > /path/to/magic/file'
y pasar los datos en lugar de construir una cadena.