Schrift
[thread]3201[/thread]

system und mod_perl? (Seite 2)

Leser: 1


<< |< 1 2 3 >| >> 28 Einträge, 3 Seiten
ptk
 2006-04-01 19:46
#30003 #30003
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
[quote=bsnoop,01.04.2006, 17:01]strace? damit kann mein Server irgendwie nix anfangen...[/quote]
Läuft dein Server mit Linux? Installier' strace, es hilft oft! Bei anderen Betriebssystemen heißt es ktrace oder truss.

Ein weiterer Test: laufen deine CGIs unter dem gleichen Benutzer wie die mod_perl-Prozesse? Vielleicht sind die mod_perl-Prozesse unterprivilegiert?
bsnoop
 2006-04-01 20:15
#30004 #30004
User since
2006-03-30
25 Artikel
BenutzerIn
[default_avatar]
Ja läuft mit Linux, werde das mal installieren.

An den Benutzer habe ich noch gar nicht gedacht!! Die CGIs laufen unter der Benutzerkennung des virtuellen Hosts, die mod_perl-Prozesse unter wwwrun, wenn ich das richtig geblickt habe.

Der Server ist so konfiguriert dass alle .pl-Dateien im httpdocs Verzeichnis als mod_perl Prozess laufen. Daher denke ich mal auch der Benutzer wwwrun.
Liegt das daran? Und wenn ja, läßt sich das evt. auf einfachem Wege ändern?
bsnoop
 2006-04-01 20:58
#30005 #30005
User since
2006-03-30
25 Artikel
BenutzerIn
[default_avatar]
Also bei der Installation von strace treten Fehler auf, das kann ich also leider erstmal nicht installieren, dazu bin ich nicht linux fit genug.
ptk
 2006-04-01 23:45
#30006 #30006
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
Kannst du das Kommando als wwwrun-Benutzer laufen lassen? Also z.B. mit
Code: (dl )
sudo -u wwwrun mp2cat ...

?

Den mod_perl-Benutzer kannst du nicht einfach ändern, weil das der gleiche wie für alle Apache-Prozesse ist.
bsnoop
 2006-04-02 19:12
#30007 #30007
User since
2006-03-30
25 Artikel
BenutzerIn
[default_avatar]
Entschuldigung für die späte Antwort, zu allem Überfluss war gestern abend auch noch die Internetverbindung tot! Ja so macht das arbeiten Spaß... ;)

So also mit sudo (was auch erstmal installiert werden musste) funktioniert das auch nicht, dann meldet er "Permission denied". Also scheint es wohl in der Tat am User wwwrun zu liegen.

Die Frage ist jetzt wie sich das beheben läßt? Wenn ich das richtig verstanden habe läuft mod_perl unter wwwrun weil auf dem Server mod_perl so konfiguriert ist, dass .pl Dateien im document-root der vhosts unter mod_perl laufen, dort aber gleichzeitig alles unter dem Apache User wwwrun läuft.

Kann man ein bestimmtes Verzeichnis eines Vhosts so einrichten dass es nicht unter wwwrun läuft sonder auch unter dem Benutzernamen des vhosts?

Ich hatte das eben mal versucht indem ich ein zusätzliches Verzeichnis eingerichtet habe, dieses Verzeichnis mit der Directive
Code: (dl )
ScriptAlias /mod/ /home/httpd/vhosts/NAME/mod/

in der Serverkonfiguration eingetragen und mod_perl für dieses Verzeichnis als Perl-Handler konfiguriert habe.
Also im Prinzip genau die gleiche Konfig wie das cgi-bin Verzeichnis (hoffe ich zumindest), nur zusätzlich mod_perl als Handler für .pl Dateien.
Funzt auch nicht, scheint aber auch unter wwwrun zu laufen.

Mittlerweile habe ich auch rausgefunden, dass die Prozesse im cgi-bin Verzeichnis auch unter wwwrun laufen, dort aber ein Kindprozess aufgemacht wird, der unter dem Benutzernamen des vhosts abgearbeitet wird.

Verwirrung!\n\n

<!--EDIT|bsnoop|1143994923-->
ptk
 2006-04-02 22:10
#30008 #30008
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
Oft ist der Apache mittels suexec so konfiguriert, dass cgi-Skripte unter dem gleichen User, dem auch das Skript gehört, ausgeführt werden. Ich denke mir auch, dass andere User-Modelle auch möglich sind. mod_perl-Requests werden immer mit dem gleichen User, wie auch der Apache-Prozess läuft, ausgeführt. Wenn man das ändern möchte, müsste man alle Apache-Prozesse unter diesen User ausführen lassen. Das möchte man aber aus Sicherheitsgründen nicht, sondern man lässt es einen Benutzer mit minderen Berechtigungen (wwwrun oder nobody) machen. Workaround: du könntest ein kleines Wrapperskript schreiben, dass nur den Owner für den mp3cat-Prozess setzt. Das kannst du mit suidperl machen (siehe auch die Perldoc:perlsec) oder mit sudo.
bsnoop
 2006-04-02 22:53
#30009 #30009
User since
2006-03-30
25 Artikel
BenutzerIn
[default_avatar]
Ja, suexec ist auf dem Server auch installiert und aktiv.

Ich habe gerade nochmal rumprobiert und einfach mal versucht eine Datei anzulegen mittels dem mod_perl Skript. Das geht auch nicht -> Permission denied

Die Tipps mit dem Wrapperskript werde ich mir anschauen!

Nochmal rein zum Verständnis:
Wenn es der Normalfall ist dass mod_perl Prozesse unter der UID des Apache (also mit minderen Rechten) laufen, ist man dann mit mod_perl nicht stark eingeschränkt? Mein aktuelles Problem z.B. ist also eigentlich normal unter mod_perl?

Vielen Dank übrigens für deine Hilfe!
Dubu
 2006-04-02 23:26
#30010 #30010
User since
2003-08-04
2145 Artikel
ModeratorIn + EditorIn

user image
So lange du nicht gerade Systemverwaltungsaufgaben über den Webserver erledigen musst, sehe ich keinen Grund, es anders zu machen. Auf diese "minderen Rechte" sollten sich alle Prozesse auf dem Rechner beschränken, soweit es möglich ist.
bsnoop
 2006-04-02 23:39
#30011 #30011
User since
2006-03-30
25 Artikel
BenutzerIn
[default_avatar]
Nun ja schon, nur wenn es notwendig ist dass das Skript das Programm mp3cat aufruft komme ich ja nicht drum herum diesem Skript halt die entsprechenden Rechte für den System-Aufruf zu geben. Oder ich lasse es als CGI-Skript laufen, aber es geht ja nun mal gerade darum das unter mod_perl hinzubekommen.

Wie kann ich eigentlich aus der Signalnummer (wie z.B. 3328 ) rausbekommen welches Signal dahinter steckt auf meinem System?\n\n

<!--EDIT|bsnoop|1144006777-->
ptk
 2006-04-03 00:09
#30012 #30012
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
<!--pod_f1--><a href="//perldoc.perl.org/functions/system.html" target="_blank"><img alt="perldoc " src="/iB_html/non-cgi/Skin/SKIN-3/images/perldoc.gif" border="0"> <!--pod_f2-->-f system<!--pod_f3--></a><!--pod_f4--> zeigt dir, wie du aus dem Status den Exitcode und das Signal herauskriegst. Für die Signalnummer habe ich in den Include-Dateien meines Systems geschaut (/usr/include/signal.h, dort gab es einen Hinweis auf /usr/include/sys/signal.h). Ansonsten kann man in Config.pm der Perl-Installation schauen: dort gibt es Variablen für sig_name und sig_num.
<< |< 1 2 3 >| >> 28 Einträge, 3 Seiten



View all threads created 2006-04-01 01:24.