J'écris une application compilée régulière qui doit créer un fichier spécial et y écrire un cookie magique. Je ne peux pas écrire le fichier directement depuis l'application, le modèle de sécurité du système m'oblige à lancer un outil d'aide avec des privilèges élevés pour faire l'affaire. Je peux fournir n'importe quel nombre d'arguments à l'outil d'aide. Maintenant, je voudrais choisir une commande système très simple qui servirait d'outil d'assistance et créerait le fichier pour moi. Quelque chose comme ça:
/bin/sh -c "/bin/echo -n 'magic' > /some/where/file"
Simple touch
ne le coupe pas car j'ai besoin d'écrire le cookie dans le fichier, un simple echo
sans le shell shell ne fonctionne pas car il a besoin d'une redirection pour écrire le fichier. Je ne me sens pas à l'aise d'appeler le shell avec les privilèges root pour effectuer une tâche aussi triviale. Existe-t-il une commande système vraiment simple et contrainte que je pourrais appeler pour écrire le fichier pour moi?
tee
. Merci!
/bin/sh -c 'echo magic > /path/to/magic/file'
ne fonctionne pas? Ce serait un fichier exécutable et deux arguments. Vous devrez créer le dernier argument sous forme de chaîne (avec sprintf ou équivalent). Y a-t-il une raison pour laquelle cela ne fonctionnerait pas pour vous? D'après votre question, il semble que doCommandAsRoot () ne prend pas d'entrée pour diffuser la commande, n'est-ce pas? Sinon, vous pouvez remplacer le dernier argument par'cat > /path/to/magic/file'
et transmettre les données au lieu de construire une chaîne.