Apache2 mit fastcgi - wie bspw. phpmyadmin für alle?
Gunther
- webserver
Hallo Selfgemeinde!
Folgende Frage:
Wenn ich unter meinem Debian 5.0 Apache2 (apache2-mpm-worker) mit mod-fcgid und php5-cgi installiere, wie kann ich dann (gemeinsame) Anwendungen wie bspw. PHPMyAdmin verwenden?
Gruß Gunther
Wenn ich unter meinem Debian 5.0 Apache2 (apache2-mpm-worker) mit mod-fcgid und php5-cgi installiere, wie kann ich dann (gemeinsame) Anwendungen wie bspw. PHPMyAdmin verwenden?
Verzeihe mir meine dumme Frage aus Interesse:
Was hat das miteinander zu tun bzw. inwiefern widerspricht sich das?
Mathias
Hallo Mathias!
»» Wenn ich unter meinem Debian 5.0 Apache2 (apache2-mpm-worker) mit mod-fcgid und php5-cgi installiere, wie kann ich dann (gemeinsame) Anwendungen wie bspw. PHPMyAdmin verwenden?
Verzeihe mir meine dumme Frage aus Interesse:
Es gibt doch beaknntlich keine dummen Fragen ..., und von dir schon gar nicht. ;-)
Was hat das miteinander zu tun bzw. inwiefern widerspricht sich das?
Von "sich widersprechen" war doch gar keine Rede.
Mein Problem besteht (in erster Linie) darin, dass ich nicht weiß, wie ich das (eine) PHPMyAdmin Script für alle User ausführbar mache. Denn Suexec meckert immer, dass das Script nicht im Docroot liegt.
Gruß Gunther
Hallo,
kannst du nicht eine subdomain anlegen, pma.example.com? Der Zugriff auf die Datenbank ist doch von den FTP/Domain-Nutzern unabhängig. Oder was meinst Du mit "Nutzern" bzw. für "alle"?
Gruß
jobo
Hallo!
kannst du nicht eine subdomain anlegen, pma.example.com? Der Zugriff auf die Datenbank ist doch von den FTP/Domain-Nutzern unabhängig. Oder was meinst Du mit "Nutzern" bzw. für "alle"?
Ich meine folgendes:
Wenn ich das Paket apache2-mpm-worker installiere, um die threaded Version des Apache2 laufen zu lassen, dann kann ich ja nicht mod_php verwenden (weil das nicht thread-safe ist). Ergo muss ich eine CGI Variante verwenden, z.B. mod_fcgid.
Das bedingt aber wiederum, dass alles mit per User Einstellungen läuft. Also pro User ein Docroot, welches dem User gehört.
Apache läuft als www-data und ist Mitglied jeder Benutzergruppe.
Ich schaffe es aber nicht, dass auch jeder User auf phpmyadmin zugreifen kann (ich will das ja nicht für jeden User einzeln installieren).
Standardmäßig wird das bei Debian in /usr/share/phpmyadmin installiert. Aber auch ein Symlink von dort auf /var/www/ bringt noch keine Lösung. Wenn ich die Seite im Browser aufrufe, kriege ich einen 403 Forbidden.
Ich weiß eben nicht, was ich ggf. noch als zusätzliche Einstellung bspw. in einer entsprechenden <Directory> Direktive in jeder available-sites conf eintragen muss, damit jeder User auch auf phpmyadmin zugreifen kann.
Ich hoffe, jetzt ist mein Problem verständlicher geworden.
BTW: Ich habe schon stundenlang gegoogelt und in diversen Linux-Foren gesucht - nix. Jeder dort hat es irgendwann aufgegeben.
Gruß Gunther
Hallo,
naja, das Problem hast du auch mit mod_php, wenn suexec läuft umso mehr.
Deshalb mach duch einen phpmyadmin-user, "installier" dort in der docroot die dateien und gib es öffentlich frei. Ich weiß ja nicht, wie du deine verschiedenen user verwaltest, über mod_user oder wie das heißt, oder über (sub)domains. Immerhin brauchst du phpmyadmin ja nur irgendwie öffentlich zugänglich zu machen, denn es verwaltet ja nur die login-möglichkeit zum sql-server und dessen bedienung.
Gruß
jobo
Hallo,
naja, das Problem hast du auch mit mod_php, wenn suexec läuft umso mehr.
Das hatte ich vergessen explizit zu erwähnen, aber Suexec läuft natürlich auch (ich schrieb ja bereits:"Denn Suexec meckert immer, dass das Script nicht im Docroot liegt.")
Deshalb mach duch einen phpmyadmin-user, "installier" dort in der docroot die dateien und gib es öffentlich frei.
Und wie gebe ich es "öffentlich" frei?
Ich weiß ja nicht, wie du deine verschiedenen user verwaltest, über mod_user oder wie das heißt, oder über (sub)domains.
Da es sich nicht um hunderte User, sondern lediglich um ca. 10 handelt, lege ich diese selber an.
Immerhin brauchst du phpmyadmin ja nur irgendwie öffentlich zugänglich zu machen, denn es verwaltet ja nur die login-möglichkeit zum sql-server und dessen bedienung.
Ja, aber an diesem "irgendwie" bleibe ich halt hängen und komme nicht weiter. ;-)
Debian Suexec (nicht suexec-custom) ist wiefolgt kompiliert:
/usr/lib/apache2/suexec -V
********************************************************
-D AP_DOC_ROOT="/var/www"
-D AP_GID_MIN=100
-D AP_HTTPD_USER="www-data"
-D AP_LOG_EXEC="/var/log/apache2/suexec.log"
-D AP_SAFE_PATH="/usr/local/bin:/usr/bin:/bin"
-D AP_UID_MIN=100
-D AP_USERDIR_SUFFIX="public_html"
********************************************************
Meine User (pro Domain einer) haben ihr jeweiliges Docroot unter
/var/www/vhosts/<domain.tld>/public_html
Eigentümer und Gruppe ist der jeweilige User (UID & GID) >= 1000
Der Apache-User ist www-data und Mitglied jeder einzelnen Benutzergruppe.
Gruß Gunther
Hallo,
mach einen 11ten user namnes irgendwasphpmyadmin und "installier" dort phpyadmin:
Meine User (pro Domain einer) haben ihr jeweiliges Docroot unter
/var/www/vhosts/<domain.tld>/public_html
/var/www/vhosts/subdomainxyz.example.com/public_html
"freigeben" tust du das wie bei jedem anderen user auch. Ist doch ein Apache server. Ich vermute, du verstehst vielleicht nicht ganz, was php-my-admin macht. Nicht jeder user braucht als user einen Zugriff. Es genügt, wenn alle user auf das eine Skript zugreifen via (sudomain.)example.com/myadminverzeichnis.
Gruß
jobo
Hallo,
mach einen 11ten user namnes irgendwasphpmyadmin und "installier" dort phpyadmin:
»» Meine User (pro Domain einer) haben ihr jeweiliges Docroot unter
»» /var/www/vhosts/<domain.tld>/public_html/var/www/vhosts/subdomainxyz.example.com/public_html
"freigeben" tust du das wie bei jedem anderen user auch. Ist doch ein Apache server. Ich vermute, du verstehst vielleicht nicht ganz, was php-my-admin macht.
Das will und kann ich nie ausschließen ...,
Nicht jeder user braucht als user einen Zugriff. Es genügt, wenn alle user auf das eine Skript zugreifen via (sudomain.)example.com/myadminverzeichnis.
..., aber phpmyadmin ist ein PHP Script (index.php). Damit bei der fcgi Variante und Suexec ein User ein PHP Script ausführen kann, braucht er die entsprechende Berechtigung und es muss ein Wrapper angegeben sein:
SuexecUserGroup user1 user1
FCGIWrapper /var/www/vhosts/<domain.tld>/php-fcgi/php-fcgi-starter .php
So, und jetzt bitte für einen Dummy wie mich nochmal langsam zum Mitschreiben:
Wie, wo und was trage ich ein/ lege ich an, damit jeder meiner User das PHPMyAdmin Script für sich aufrufen/ starten kann?
Gruß Gunther
Hallo,
deine user haben doch domains. wenn du die php-my-admin-dateien in irgendeinen public_html-ordner packst, kannst du in der regel via example.com/irgendeinphpmyadminordner darauf zugreifen. das kann jeder, der internet hat. der zugriff via phpmyadmin erlaubt es aber jedem user (auch denen, denen die domain nicht gehört) auf den sql-server zuzugreifen. jetzt willst du sicher nicht sagen: ich habs für hans installiert, der hat die domain hans.example.com, geht mal zu hans.example.com/dessenphpmyadminordner.
deshalb legst du einen user "allerwelt" an, verpasst ihm die (sub)domain allerweltszugang.example.com und dort können alle user dann ihre datenbanken konfigurieren. (phpmyadmin [dot] wvs-berlin [punkt] de) - dort können alle datenbankuser selbige konfigurieren.
Gruß
jobo
Hallo!
deine user haben doch domains. wenn du die php-my-admin-dateien in irgendeinen public_html-ordner packst, kannst du in der regel via example.com/irgendeinphpmyadminordner darauf zugreifen. das kann jeder, der internet hat.
Nein, eben genau nicht!
Bei der PHP als CGI Variante mit Suexec kann ein User nur Dateien und Scripte aufrufen, die in *seinem* Document Root liegen! Und PHP wird per User separat ausgeführt!
Wie man PHPMyAdmin unter Apache2 mit mod_php installiert und ausführt weiß ich auch. ;-)
der zugriff via phpmyadmin erlaubt es aber jedem user (auch denen, denen die domain nicht gehört) auf den sql-server zuzugreifen. jetzt willst du sicher nicht sagen: ich habs für hans installiert, der hat die domain hans.example.com, geht mal zu hans.example.com/dessenphpmyadminordner.
Doch - genau so in etwa muss es hinterher laufen, nur dass ich die PHPMyAdmin Dateien natürlich nur einmal auf der Platte haben möchte.
Ich weiß jetzt halt nur nicht (und kann dazu auch im Internet nichts finden), wo ich die PHPMyAdmin Dateien installieren muss (Eigentümer, Gruppe, Rechte), bzw. wo ich bspw. Symlinks setzen muss und ob und welche Directory Diretiven ggf. noch von Nöten sind, damit jeder meiner User/ über jede meiner Domains PHPMyAdmin ausführen kann/ ausführbar ist?
deshalb legst du einen user "allerwelt" an,
Dessen Gruppe gehören dann welche anderen User mit an?
verpasst ihm die (sub)domain allerweltszugang.example.com und dort können alle user dann ihre datenbanken konfigurieren. (phpmyadmin [dot] wvs-berlin [punkt] de) - dort können alle datenbankuser selbige konfigurieren.
Vorausgesetzt, dieser User ist denn dann berechtigt, das PHPMyAdmin Script auszuführen - woran es ja bis jetzt immer scheitert, da für Suexec das Document Root bei Debian unter /var/www/ liegen muss und phpmyadmin als Paket aber unter /usr/share/phpmyadmin installiert wird.
Bisher meckert also entweder
Wie kann ich jetzt jeweils für jeden User alle 3 zufriedenstellen?
Das ist meine Frage.
Wenn du das Thema mal googelst, wirst du feststellen, dass ich weitaus nicht der Einzige bin, der dieses Problem hat. Leider konnte ich eben bis jetzt nur nirgendwo eine funktionierende Lösung für das Problem finden.
Gruß Gunther
Hallo,
Hallo!
»» deine user haben doch domains. wenn du die php-my-admin-dateien in irgendeinen public_html-ordner packst, kannst du in der regel via example.com/irgendeinphpmyadminordner darauf zugreifen. das kann jeder, der internet hat.
Nein, eben genau nicht!
Bei der PHP als CGI Variante mit Suexec kann ein User nur Dateien und Scripte aufrufen, die in *seinem* Document Root liegen! Und PHP wird per User separat ausgeführt!Wie man PHPMyAdmin unter Apache2 mit mod_php installiert und ausführt weiß ich auch. ;-)
Ich kann mich nicht verständlich machen. Hol dir die domain meinphpmyadminzugang.de, nimm dich als user und sag den anderen, sie sollen auf meinphpmyadminzugang.de gehen, wenn sie ihre datenbank verwalten wollen.
Vorausgesetzt, dieser User ist denn dann berechtigt, das PHPMyAdmin Script auszuführen - woran es ja bis jetzt immer scheitert, da für Suexec das Document Root bei Debian unter /var/www/ liegen muss und phpmyadmin als Paket aber unter /usr/share/phpmyadmin installiert wird.
Nein, du kannst doch auch auf die von mir genannte Seite gehen. Obwohl du weder user bist noch Rechte hast. Hättest du aber einen mysql-nutzernamen mit passwort dort, könntest du dich mit dem mysql-server connecten. Ich kann dir leider nicht begreiflich machen, was ich meine, kapiere aber sehr wohl, was du willst und glaube so wie du es willst geht es nicht.
Gruß
jobo
Hallo,
Ich kann mich nicht verständlich machen. Hol dir die domain meinphpmyadminzugang.de, nimm dich als user und sag den anderen, sie sollen auf meinphpmyadminzugang.de gehen, wenn sie ihre datenbank verwalten wollen.
»» Vorausgesetzt, dieser User ist denn dann berechtigt, das PHPMyAdmin Script auszuführen - woran es ja bis jetzt immer scheitert, da für Suexec das Document Root bei Debian unter /var/www/ liegen muss und phpmyadmin als Paket aber unter /usr/share/phpmyadmin installiert wird.
Nein, du kannst doch auch auf die von mir genannte Seite gehen. Obwohl du weder user bist noch Rechte hast. Hättest du aber einen mysql-nutzernamen mit passwort dort, könntest du dich mit dem mysql-server connecten. Ich kann dir leider nicht begreiflich machen, was ich meine, kapiere aber sehr wohl, was du willst und glaube so wie du es willst geht es nicht.
http://forum.de.selfhtml.org/archiv/2008/11/t180065/#m1189047 - weshalb es nicht geht, so wie du denkst.
Gruß
jobo
Hallo,
»» Nein, du kannst doch auch auf die von mir genannte Seite gehen. Obwohl du weder user bist noch Rechte hast. Hättest du aber einen mysql-nutzernamen mit passwort dort, könntest du dich mit dem mysql-server connecten. Ich kann dir leider nicht begreiflich machen, was ich meine, kapiere aber sehr wohl, was du willst und glaube so wie du es willst geht es nicht.
http://forum.de.selfhtml.org/archiv/2008/11/t180065/#m1189047 - weshalb es nicht geht, so wie du denkst.
bzw. hier: http://forum.de.selfhtml.org/archiv/2009/1/t181789/#m1203458 und die Antwort darauf. Das Problem ist hier aber anders, denn PEAR lässt sich nur intern einbinden, einen Zugang für alle auf dem Server kannst du für phpmyadmin aber realisieren, nicht aber, indem du jedem User das Script zur Verfügung stellst, was, wie ich versuchte zu erläutern, ja auch garnicht nötig ist (anders als bei der Einbindung von PEAR).
Gruß
jobo
Hallo,
vielen Dank für deine Mühe und Geduld.
Auch wenn ich zu meinem Bedauern sagen muss, dass ich es immer noch nicht verstanden habe.
Ich ziehe für mich daraus den Schluss, dass ich
Ich bin ja immer gerne bereit, neue Dinge zu erlernen. Aber eine entsprechende Chance dazu muss schon bestehen. In diesem Fall finde ich die Dokumentation zu diesem Thema mehr als bescheiden!
Es wundert mich langsam immer weniger, dass es da draußen so viele "unsichere" Server gibt!
Dinge standardmäßig sicher zu machen und zwar so, dass die sichere Variante die einfachste ist, sollte imho oberste Priorität haben. Und nicht umgekehrt!
Gruß Gunther
Hallo,
sorry wenn ich dabei bleibe, dass du u.u. die funktionsweise von phpmyadmin bzw. dem vom apache getrennt laufenden mysql-server u.u. nicht verstehst. sorry auch, dass ichs nicht erklären kann. was die sicherheit und skripte angeht ist es eben so, dass die skripte dem user gehören müssen, was ja auch o.k. und sicher ist. ob man pauschal sagen kann, dass es deshalb soviel unsichere server gibt, wage ich zu bezweifeln. genauso könnte es daran liegen, dass die leute, die sie betreiben, nicht genau wissen, was sie tun.
Gruß
jobo
Hallo Gunther
Wenn ich unter meinem Debian 5.0 Apache2 (apache2-mpm-worker) mit mod-fcgid und php5-cgi installiere, wie kann ich dann (gemeinsame) Anwendungen wie bspw. PHPMyAdmin verwenden?
Lege das phpmyadmin Verzeichnis an einen allgemeinen Ort (z.B. /var/www/).
Nun erstelle einen Link zu PMA im Webverzeichnis (ln -s /var/www/phpmyadmin/ phpmyadmin)
Das sollte funktionieren (haben wir auch so im Einsatz)
Gruss, David
Hallo David!
»» Wenn ich unter meinem Debian 5.0 Apache2 (apache2-mpm-worker) mit mod-fcgid und php5-cgi installiere, wie kann ich dann (gemeinsame) Anwendungen wie bspw. PHPMyAdmin verwenden?
Lege das phpmyadmin Verzeichnis an einen allgemeinen Ort (z.B. /var/www/).
Nun erstelle einen Link zu PMA im Webverzeichnis (ln -s /var/www/phpmyadmin/ phpmyadmin)
OK - hab' ich gemacht.
Das sollte funktionieren (haben wir auch so im Einsatz)
Leider nicht.
Ich habe jetzt die verschiedensten Varianten durchprobiert - alle mit demselben Resultat => klappt nicht!
Lediglich die Fehlermeldungen sind unterschiedlich:
Entweder "meckert" Suexec: "target uid/gid (1000/1000) mismatch with directory (33/33) or program (33/33)"
Oder der Apache: "403 Forbidden"
Oder FCGI: "No input file specified."
Fragen:
Welche(n) Eigentümer und Gruppe habt ihr denn für /var/www/phpmyadmin/ gesetzt und mit welchen Rechten?
Und was für Einträge in der jeweiligen VHost conf (unter /etc/apache2/sites-available), bzw. der apache.conf (unter /etc/phpmyadmin)?
Und wie ist eure Config im Bezug auf die jeweiligen User? Also z.B. wer ist Mitglied welcher Gruppe?
Gruß Gunther