Name des PostgreSQL Service accounts unter WinXPP

Hallo,
ich benötige für das programmierte Speichern von Dateien (large objects) aus einer Datenbank die Schreibrechte in einem neu anzulegenden Verzeichnis für den PostgreSQL Service account.
Gibt es unter PostgreSQL (ich verwende V 8.1) eine Möglichkeit, den Namen des service accounts zu ermitteln, damit ich diesem die Rechte vergeben kann?

Danke
RainerB

Hallo,

Wenn man die Funktionweise eines Betriebsystems verstanden hat, sollte es eigentlich kein Problem sein. Programme, die unter einen eigenen Service laufen, müssen entsprechende Zugriffsrechte auf die Verzeichnisse, unter den das Programm gespeichert ist, haben. Schau Dir mal die Rechte der PostgreSQL-Verzeichnisse an.

Fallst Du bei der Installation keine Änderungen vorgenommen hast lautet der User “postgres”. Das Passwort wurde dann auch per Zufallsgenerator erzeugt.



mfg

fristo

Hallo Fristo,
Danke für deinen Hinweis. Eigentlich denke ich, die Funktionsweise von Benutzerrechten verstanden zu haben. Aber vielleicht habe ich mich nicht ganz verständlich ausgedrückt.

  1. ich habe ein Programm geschrieben, welches in der DB als large objects gespeicherte Dateien in ein neu erstelltes Verzeichnis (ausserhalb PostgreSQL-Verzeichnis, mit der Anweisung "SELECT lo_export(., ‘C:\test\text1.zip’) FROM
    WHERE ") speichert.
  2. Wenn das Verzeichnis C:\test existiert und der user postgres Schreibrechte hat, geht alles ok.
  3. Bei einer automatischen Neuanlage des Verzeichnisses hat der Serviceuser postgres keine Schreibrechte.
  4. Diese müssen erst dem Benutzer erteilt werden (z.B. über cacls …). Dafür breuche ich den Namen des Serviceaccounts, denn mit dessen Rechten wird geschrieben.
  5. Wer sagt mir, dass bei der PostgreSQL-Installation der Service accoount “postgres” tatsächlich eingerichtet wurde oder vielleicht ein anderer Name vergeben wurde?
  6. Deshalb möchte ich auf Nummer sicher gehen, und den account ermitteln, ihm nach der Anlage des Zielordners dort die Schreibrechte geben und dann die Dateien dort speichern.

    Vielen Dank für jeden Hinweis
    RainerB

Es war schon verständlich ausgedrückt. Ich hatte vom Verstehen des Betriebsystems gesprochen. Benutzerechte sind nur ein Teil davon. Ein anderer Teil sind die z.B die Dienste (Service).

Da der PostgreSQL Server als Dienst gestartet wird, muss natürlich ein Eintrag dafür in der Registry vorhanden sein. Unter [HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\pgsql-8.1] findest Du die Parameter für den Dienst. Den Namen des User für den Dienst findest Du unter dem Schlüssel “ObjectName”. Den richtigen Namen erhälst Du wenn Du am Anfang die Zeichen “.\” löscht. Das Programm, das als Dienst gestartet wird, heißt “postmaster.exe”.



mfg

fristo

Hallo fristo,

Danke für deine Hilfe. Diesen Hinweis habe ich gebraucht. Ich habe in der registry schon gesucht aber nichts gefunden. Nun klappt es prima.
Eine Frage noch, bei allen PC’s, die ich untersucht habe, beginnt der ObjectName immer nur mit “.”, kommt der zweite Backslash bei dir aus der Darstellung in einem Programmcode?

Vielen Dank
RainerB

Hallo RainerB,

in der Registry beginnen die ObjectNamen mit".". Wenn Du diesen Teil der Registry in eine Datei exportiert beginnen die ObjectNamen mit “.\”. “\” hat etwas mit der Anwendung von “” unter UNIX zu tun.

Muss mal schauen welches Format Du in Deinem Program erhälst.



mfg

fristo

Da ich direkt aus der registry lese, lösche ich am Anfang des Wertes “.”.
Vielen Dank

RainerB