Ich schreibe eine regulär kompilierte Anwendung, die eine spezielle Datei erstellen und ein magisches Cookie darin schreiben muss. Ich kann die Datei nicht direkt aus der Anwendung schreiben. Für das Systemsicherheitsmodell muss ich ein Hilfsprogramm mit erhöhten Berechtigungen starten, um den Trick auszuführen. Ich kann dem Hilfsprogramm beliebig viele Argumente liefern. Jetzt möchte ich einen sehr einfachen Systembefehl auswählen, der als Hilfsprogramm dient, und die Datei für mich erstellen. Etwas wie das:
/bin/sh -c "/bin/echo -n 'magic' > /some/where/file"
Simple touch
schneidet es nicht, da ich das Cookie in die Datei schreiben muss. Ein einfaches echo
ohne Shell-Wrapper funktioniert nicht, da es eine Umleitung benötigt, um die Datei zu schreiben. Ich fühle mich nicht wohl, wenn ich die Shell mit Root-Rechten aufrufe, um eine so triviale Aufgabe zu erledigen. Gibt es einen wirklich einfachen, eingeschränkten Systembefehl, den ich aufrufen könnte, um die Datei für mich zu schreiben?
tee
. Vielen Dank!
/bin/sh -c 'echo magic > /path/to/magic/file'
nicht funktioniert? Das wäre eine ausführbare Datei und zwei Argumente. Sie müssten das letzte Argument als Zeichenfolge erstellen (mit sprintf oder einem gleichwertigen Argument). Gibt es einen Grund, warum dies für Sie nicht funktionieren würde? Aus Ihrer Frage geht hervor, dass doCommandAsRoot () keine Eingaben zum Streamen in den Befehl benötigt, richtig? Andernfalls könnten Sie das letzte Argument durch ersetzen'cat > /path/to/magic/file'
und die Daten übergeben, anstatt eine Zeichenfolge zu erstellen.