[linux-l] PostgeSQL

Steffen Dettmer steffen at dett.de
So Nov 9 19:09:50 CET 2003


* Olaf "Rübezahl" Radicke wrote on Sat, Nov 08, 2003 at 16:32 +0100:
> Aber mal ein Beispie:
> 
> <user_olaf>
> bash-2.05b$ pg_ctl -D ./db_data -l ./tmp/logfile -o "-i" start
> postmaster successfully started
> </user_olaf>

(Instanz "user_olaf" läuft)

> <user_gast>
> sh-2.05b$ pg_ctl -D /db_data -m fast stop
> pg_ctl: cannot find /db_data/postmaster.pid
> Is postmaster running?
> </user_gast>

(Instanz "user_gast" läuft nicht und kann nicht beendet werden)

> <user_olaf>
> bash-2.05b$ pg_ctl -D ./db_data -l ./tmp/logfile -o "-i" start
> pg_ctl: Another postmaster may be running.  Trying to start postmaster
> anyway.
> pg_ctl: cannot start postmaster

(Instanz "user_olaf" läuft ja noch)

> Examine the log output.
> <!-- Ups, wer ist den der Andere? ->

Du selbst. :)

> bash-2.05b$ pg_ctl -D /db_data -m fast stop
> pg_ctl: cannot find /db_data/postmaster.pid
> Is postmaster running?

nicht "./db_data"?

> Also muss ich die die Rechte von pg_ctl so ändern
> das nur noch ein User sie ausführen darf - schließe
> ich daraus.

Einfach nicht benutzen. Wenn ein User ne eigene Datenbank starten
möchte, laß ihn doch. Er kann ja nur "seine" Datenbank beenden,
nie die eines anderen.

* Aus der zweiten Mail:
> Auch wenn ich einen User "postgres" habe, können die anderen
> User die DB immer noch selber starten, wie ich gezeigt habe.

Sie können *eine andere* Datenbank starten. Die Dateien der
Datenbank sind nur für den User "postgres" lesbar und nicht für
andere.

> Also MUSS ich doch dann den startbefehl (wie "shutdown") für
> für normale User sperren. 

Nein, Unix sorgt schon dafür, daß man keine fremden Prozesse
beenden kann (es sei denn, man ist zufällig root, klar).

> Oder ich automatisiere den Start.

Ja, natürlich: die Datenbank wird bei Systemstart gestartet.

> Weil wenn er erst mal läuft, können die anderen nichts mehr
> machen.

Sie könnten sonst höchstens den port 5432 belegen, so daß die
"systemdatenbank" diesen nicht verwenden kann (und vermutlich
nicht startet), weil 5432 > 1024 ist... So kann ein User ein DoS
machen, kann r aber so erstmal eh, z.b. mit 

while (1)  { fork(); };

das "killt" vermutlich auch erstmal das System...

oki,

Steffen

-- 
Dieses Schreiben wurde maschinell erstellt,
es trägt daher weder Unterschrift noch Siegel.




Mehr Informationen über die Mailingliste linux-l