C Programm Rechte

...komplette Frage anzeigen

4 Antworten

Wie schon gesagt, Rechteverwaltung ist Aufgabe des Betriebssystems. Aus deinem eigenen Programm heraus kannst du die Rechte mit einem Aufruf von system() realisieren, welches dann chmod (Linux / Mac) bzw. attrib (Windows) aufruft - vorrausgesetzt, das Programm hat die Rechte dazu. Und wenn die Datei dann schreibgeschützt ist, dann darf fputs auch nix reinschreiben.

Antwort bewerten Vielen Dank für Deine Bewertung

Nicht mit einem "Programmcode", aber mit Einstellungen auf Ebene des Betriebssystems, in dem das Programm läuft.

  • Lasse das Programm unter einem extra Nutzerkonto ausführen (nenne das Konto meinetwegen Sandbox, damit Du weißt, was es tut)!
  • Stelle im Dateimanager für das genannte Konto und die Dateien und Verzeichnisse, in denen das Programm nicht schreiben können soll, "kein Schreibrecht" ein!

WIE Du "kein Schreibrecht" einstellen kannst, dafür gibt's allerdings schon wieder eine ganze Reihe von Wegen nach Rom...

  • Stelle für ein so weit wie möglich übergeordnetes Verzeichnis (am besten das Root-Directory des Datenträgers) von vornherein nur minimale Rechte (nur lesen, nur in Verzeichnissen == Recht zur "Navigation") ein!
  • Stelle für untergeordnete Verzeichnisse, in denen Lese- bzw. Schreibrechte bestehen sollen, diese mit dem notwendigen Minimum ein!
  • Lege bei Bedarf für einzelne Dateien weitere Rechte fest!

Damit legst Du erstmal einen in Richtung Verzweigungen additiv wachsenden Rechtebaum fest, der das Grundgerüst Deines Rechtesystems bildet.

  • Stelle anschließend für NEGATIVE AUSNAHMEN des soweit erstellten Rechtebaumes an einzelnen Dateien oder Verzeichnissen Einschränkungen der Rechte ein!

Auf diese Weise kannst Du Dir (seit seeligen Windows-NT-Zeiten Anfang der 90er Jahre übrigens) mit elementaren Bordmitteln von Windows individuell auf Deine Bedürfnisse zurechtgeschnittene Rechtesysteme alias Sandboxen für "unartige" Software erstellen. Wenn's um "virulente" Software geht, nimm besser eine virtuelle Maschine, von der Du punktuell Schreibrechte ins Wirtssystem vermitteln läßt!

Antwort bewerten Vielen Dank für Deine Bewertung

Du kannst beim Öffnen der Datei explizit nur "r" als Berechtigungen bei fopen() angeben. Dann wird fputs() aber im besten Fall eine Fehlermeldung liefern oder dein Programm stürzt ab.

fopen("myfile.txt", "r");
Antwort bewerten Vielen Dank für Deine Bewertung

Rechteverwaltung ist Aufgabe des Betriebssystems, nicht des Anwendungsprogramms.

Ansonsten ist deine Fragestellung undeutlich. Was genau meinst du mit "verweigern, obwohl fputs vorkommt"?

Antwort bewerten Vielen Dank für Deine Bewertung

Was möchtest Du wissen?