Hallo zusammen,
Beim erstellen einer Webseite mit PHP und PostgreSQL bin ich auf folgendes Problem gestoßen: Der Datenbank Server wird nicht automatisch beim Systemstart geladen. Da ich keine Root Rechte habe, muß ich per SSH den PostgreSQLServer manuell starten. Alles in allem kein Zustand der befriedigt.
Deshalb würde ich gerne in PHP über eine einzelne Kommandozeile den Datenbankserver starten. Dieser kann aber nur von einem bestimmten SystemNutzer (Postgres) gestartet werden - ich müsste also in der Kommandozeile sowohl Nutzername und Nutzerpasswort mit übergeben. Der beste Ansatz war bisher das Kommando "su -c 'Befehl.....' postgres" - Leider kann 'su' nicht direkt das Passwort übermitteln, sondern fragt es gesondert ab. Meine Frage ist deshalb, ob es überhaupt möglich ist in einem einzigen Kommando eine Befehlszeile auszuführen und gleichzeitig NutzerLogin und Nutzerpasswort zu übergeben???
Dank und Gruß, Dirk
Am 26. April 2003 schrieb Stefan Stern:
Deshalb würde ich gerne in PHP über eine einzelne Kommandozeile den Datenbankserver starten. Dieser kann aber nur von einem bestimmten SystemNutzer (Postgres) gestartet werden - ich müsste also in der Kommandozeile sowohl Nutzername und Nutzerpasswort mit übergeben.
Vielleicht bringt dich "expect" weiter?
man expect
Freundlich grüßend,
Erik
Hallo zusammen,
Der beste Ansatz war bisher das Kommando "su -c 'Befehl.....' postgres" - Leider kann 'su' nicht direkt das Passwort übermitteln, sondern fragt es gesondert ab.
Heißt gesondert , dass es das Passwort von stdin liest? Wenn es das ist, dann speicher das folgende als Bashskript und lass es von php ausführen. #!/bin/bash su -c 'Befehl.....' postgres | echo $passwd
Fabian Hänsel wrote:
Der beste Ansatz war bisher das Kommando "su -c 'Befehl.....' postgres" - Leider kann 'su' nicht direkt das Passwort übermitteln, sondern fragt es gesondert ab.
Heißt gesondert , dass es das Passwort von stdin liest? Wenn es das ist, dann speicher das folgende als Bashskript und lass es von php ausführen. #!/bin/bash su -c 'Befehl.....' postgres | echo $passwd
Wenn schon, dann echo $passwd | su -c 'Befehl.....' postgres aber das mag su nicht.
Besser ist da sudo ( http://www.sudo.ws/ ), damit kann man einzelne Befehle für bestimmst Benutzer freischalten mit festgelegten Rechten.
Grüße, Frank Benkstein.
Once upon a time, I heard Frank Benkstein say:
Besser ist da sudo ( http://www.sudo.ws/ ), damit kann man einzelne Befehle für bestimmst Benutzer freischalten mit festgelegten Rechten.
Außerdem kann man anhand der Logs wesentlich besser nachvollziehen, wer was wann gestartet hat, aber wenn der Admin sudo konfiguriert, kann er auch die DB permanent oder auf Anfrage starten.
hej så länge.
Once upon a time, I heard Fabian Hänsel say:
Heißt gesondert , dass es das Passwort von stdin liest?
Wohl eher, daß es nicht vom stdin liest, was bei Paßworten wohl auch sinnvoll ist.
su -c 'Befehl.....' postgres | echo $passwd
Kann es sein, daß die Pipe andersrum laufen sollte?
Ein Ansatz wäre, die SecureShell zu mißbrauchen und einfach ein anderes Authentikationsverfahren als Paßwort zu verwenden. Man sollte aber schon hier und da wissen, was man tut, weil ist einmal die Authentikation ausgespäht, hat der Angreifer vollen Shell-Zugriff.
BTW, kann es sein, daß der Admin gar nicht wirklich will, daß der DB-Server läuft?
hej så länge.
lug-dd@mailman.schlittermann.de