Eine große Anwendung muss zu einem bestimmten Zeitpunkt eine kleine Anzahl von Schreibvorgängen in eine Datei ausführen, für die Root-Berechtigungen erforderlich sind. Es ist eigentlich keine Datei, sondern eine Hardware-Schnittstelle, die Linux als Datei zur Verfügung stellt.
Um zu vermeiden, dass die gesamte Anwendung Root-Rechte erhält, habe ich ein Bash-Skript geschrieben, das die kritischen Aufgaben ausführt. Das folgende Skript aktiviert beispielsweise Port 17 der Hardwareschnittstelle als Ausgabe:
echo "17" > /sys/class/gpio/export
echo "out" > /sys/class/gpio/gpio17/direction
Da dies suid
jedoch für Bash-Skripte auf meinem System deaktiviert ist, frage ich mich, wie dies am besten erreicht werden kann.
Verwenden Sie eine hier vorgestellte Problemumgehung
Rufen Sie das Skript mit
sudo
von der Hauptanwendung aus auf und bearbeiten Sie die Liste der Sudoer entsprechend, um zu vermeiden, dass Sie beim Aufrufen des Skripts ein Kennwort benötigen. Es ist mir ein bisschen unangenehm, Sudo-Berechtigungen zu erteilenecho
.Schreiben Sie einfach ein C-Programm mit
fprintf
und setzen Sie es auf suid root. Codieren Sie die Zeichenfolgen und Dateinamen fest und stellen Sie sicher, dass sie nur von root bearbeitet werden können. Oder lesen Sie die Zeichenfolgen aus einer Textdatei und vergewissern Sie sich, dass niemand die Datei bearbeiten kann.Eine andere Lösung, die mir nicht in den Sinn gekommen ist und die sicherer oder einfacher ist als die oben vorgestellten?