Ich habe eine kleine C++ App, um Lichter für ein BeagleBone Black Board, das auf Debian 9.2 läuft, ein- und auszuschalten.Eine ausführbare Datei mehr Berechtigungen geben als Benutzer
Dies geschieht durch Aktualisieren von Textdateien.
Wenn ich das Programm als Standardbenutzer ausführe, läuft es ohne Fehler, aber keiner der Lichter ändert sich.
Wenn ich das Programm mit sudo
starte, funktioniert alles gut und die Lichter funktionieren. Ich vermute, es liegt daran, dass diese Dateien einen höheren Zugriff benötigen.
Ich bin nicht sehr vertraut mit Linux-Berechtigungen, aber gibt es eine Möglichkeit, Ihr Programm den Zugriff auf die Dateien zu ermöglichen, wo ein Benutzer nicht konnte?
Ich denke, vor 20 Jahren könnten Sie die binäre Super-User-Flag geben, aber das ist sehr falsche Lösung, nicht einmal sicher, ob es noch funktioniert, oder es würde mit einigen Sicherheitsrichtlinien kollidieren. Überprüfen Sie stattdessen die betroffenen Beaglebone-Dateien, wenn sie zu einer bestimmten Gruppe gehören und Gruppenrechte für den Schreibzugriff haben, und fügen Sie dann diese Gruppe Ihrem Benutzer hinzu (der die Binärdatei ausführt). Wie auch immer, ich bin nur Linux-Benutzer, nicht Admin, also kann ich etwas über die Funktionsweise von Gruppen durcheinander bringen. In jedem Fall handelt es sich um reine * nix-Berechtigungen, nichts mit C++ oder Programmierung zu tun. – Ped7g
Wenn Sie eine erhöhte Berechtigung zum Schreiben in eine Datei benötigen, müssen Sie das Programm mit erhöhten Rechten ausführen. Es gibt einfach keinen Weg. Was Sie jedoch tun können (und sollten), ist das Löschen der Privilegien, bis Sie tatsächlich Aufgaben mit erhöhten Rechten mit [setuid] ausführen müssen (https://www.gnu.org/software/libc/manual/html_node/Setuid-Program) -Example.html). –
Macht Sinn und danke Ihnen beiden. Ich bin ein kompletter Linux-Anfänger und komme aus über 25 Jahren MS-Stack-Entwicklung, daher ist es schwierig, einige der Konzepte zu verstehen :) – user3953989