Datei als fremder User auslesen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Drezael
User
Beiträge: 11
Registriert: Dienstag 4. März 2014, 06:35

Hallo,

ich stehe vor einem Problem. Ich möchte eine config Datei anlegen auf die nur ein bestimmer User Zugriff hat. Diese soll jedoch beim Prgogrammaufruf ausglesen werden um die Einstellung zu laden. Dabei möchte ich jedoch nicht das jeder die Datei auch auserhalb des Programms lesen oder öffnen kann.

Ich hoffe einer von euch heut eine Idee wie das am besten zu verwirklichen ist.
Sirius3
User
Beiträge: 17747
Registriert: Sonntag 21. Oktober 2012, 17:20

@Drezael: für welches Betriebssystem willst Du das machen? Wenn man ein Programm unter einem anderen User ausführbar macht, muß man besonders aufpassen, dass man nicht irgendwelche Sicherheitslücken eingebaut hat.
BlackJack

@Drezael: Von welchem Betriebssystem reden wir? Und soll ein Benutzer der den Inhalt der Datei nicht lesen darf das Programm ausführen und *das* darf dann aber die Datei lesen? Mit den Rechten des Benutzers? Dann könnte der die Datei aber auch lesen‽
Drezael
User
Beiträge: 11
Registriert: Dienstag 4. März 2014, 06:35

Das ganze soll unter Debian laufen. Es soll nicht das ganze Programm als solches unter dem fremden User ausgeführet werden.
Nur die die eine Datei soll hierbei eingelesen werden. Quasi so das ich einen User erstelle der nur dafür da ist um im script die Datei auszulesen.

Ist es evtl. möglich die Datei per sudo als Benutzer X zu öffnen und zu lesen?
Sirius3
User
Beiträge: 17747
Registriert: Sonntag 21. Oktober 2012, 17:20

@Drezael: wenn Du ein Skript hast, das den Dateiinhalt einem anderen Programm zur Verfügung stellen kann, dann ist das ja nichts anderes, als dass jeder die Datei lesen kann. So wie Du Dir das vorstellst kann das nicht funktionieren.
Was für ein Problem willst Du eigentlich damit lösen? Wenn es sich um ein Passwort handelt, das niemand wissen darf, dann vergiß es. Passwörter kann man nicht benutzen ohne sie zu kennen.
Drezael
User
Beiträge: 11
Registriert: Dienstag 4. März 2014, 06:35

Es geht darum das die Daten die in der file stehen nicht von jedem einfach per nano oder vi bearbeitet werden können sondern nur über das programm selbst so wie z.b. bei einer Datenbank. Dort gibt es ja unabhängig davon das es verschiedene Benutzer gibt auch nur einen Hauptbenutzer im System der prüft ob Benutzername und Passwort richtig sind und dann die Daten schreibt.

Das ganze soll zur eingrezung von Fehlern dienen die evtl gemacht werden wenn manuell in der Datei herumgeschrieben wird.
Gibts denn keine möglichkeit das sich das laufende Programm wenn es lesen oder schreiben will die Rechte des Nutzers hierfür holt?
Das password muss natürlich im Prgramm hinterlegt sein. Nur da kommt ja keiner hin da es in verschlüsselter form vorliegt und nur durch die eingabe eines Benutzerpasswortes entschlüsselt wird.
Sirius3
User
Beiträge: 17747
Registriert: Sonntag 21. Oktober 2012, 17:20

@Drezael: da ein Nutzer prinzipiell alles machen kann, worauf er oder irgendein Programm Zugriff hat, ist Dein Ansatz falsch. Ob das Passwort irgendwo verschlüsselt ist, ist egal, da der Nutzer es entschlüsseln kann. Wenn nur ein Nutzer die Datei ändern kann, dann ist es ja in seinem Interesse, dass er sie nicht kaputt macht. Hat er einen Vorteil davon, die Datei von Hand zu ändern, wird er es machen. Ist Dein Programm gut genug, hat er keinen Vorteil und läßt das auch sein.

Geht es um Mehrbenutzerbetrieb, wie Dein Beispiel mit der Datenbank, dann brauchst Du einen Server, der den Zugriff überwacht.
garreth
User
Beiträge: 41
Registriert: Donnerstag 23. Oktober 2014, 12:04

Mein Vorschlag ist zwar arg unorthodox, aber wenn ich dir richtig verstanden habe, möchtest du nicht das man Mittels Texteditoren die Konfiguration deines Programmes ändern kann. Ich an deiner Stelle würde in Erwägung ziehen, die Konfiguration in eine Klasse zu packen und diese serialisiert mit pickle zu speichern.
Wer böse Absichten und Ahnung von Python hat, wird dir problemlos auch in der Datei rumfummeln können.
Sirius3
User
Beiträge: 17747
Registriert: Sonntag 21. Oktober 2012, 17:20

@garreth: etwas mit Pickel zu speichern, das nicht für den kurzzeitigen Datentransport gedacht ist, ist keine gute Idee. Jede kleine Änderung Deiner verwendeten Klassen kann die Daten unbrauchbar machen.
Drezael
User
Beiträge: 11
Registriert: Dienstag 4. März 2014, 06:35

Werd es so machen wie Sirius3 es angesprochen hat per Server/Client Methode. Der Sever wird zum Systemstart unter Benutzer XY gestartet und nur die und root haben zugriff auf die Configdateien. Wenn ein Benutzer sich anmeldet bekommt der Client alle weiteren notwendigen Daten zum weiterarbeiten. Auserdem kann ich so gleich ein verifizierung der Benutzer vornehmen die mit dem Programm arbeiten dürfen.
Antworten