Schrift
[thread]61[/thread]

Richtige Rechtevergabe für CGIs

Leser: 1


<< >> 8 Einträge, 1 Seite
FReAK La Marsch
 2003-10-16 13:08
#5667 #5667
User since
2003-08-14
38 Artikel
BenutzerIn
[Homepage] [default_avatar]
Hallo,
ich habe ein kleines Problem mit der richtigen Rechtevergabe für meine CGIs.

Ich habe mir ein paar CGIs unter Windows geschrieben und die dort mit Apache getestet.
Jetzt, wo alles läuft, wollte ich sie auf meinen Linux-Server kopieren (bin gerade am Anfang meiner Windows->Linux Migration).

Das habe ich als user freak gemacht.
Nun wollte ich das ganze testen aber es läuft nicht und ich finde lauter Fehler in meinen Logfiles, z.b.

Code: (dl )
1
2
3
4
[Thu Oct 16 10:02:32 2003] [notice] Accept mutex: sysvsem (Default: sysvsem)
Cannot open Local file bilder.html.tmp: Permission denied
at /var/www/cgi-bin/gallerymaker/processImages.cgi line 295
can't open 0000_live2_display.jpg: Permission denied at /var/www/cgi-bin/gallerymaker/processImages.cgi line 427.
(Das Skript soll die Dateien eigentlich selbst anlegen, doch das darf es wohl nicht)

Ich vermute fast, dass das damit zusammenhängt, dass mein Apache als user www-data läuft, die Dateien und Verzeichnisse aber alle dem user freak gehören.
Da ich jetzt nicht jedem User auch noch Schreibrechte in den Verzeichnissen geben möchte, wollte ich fragen, wie man die Benutzer und Rechte am besten vergibt, wenn man CGIs unter Apache laufen läßt.

Soll ich da alle Dateien an www-data übergeben, eine extra Gruppe dafür anlegen (falls ja, wie macht man das?), oder was macht man da am besten?


Vielen Dank und noch viel Spaß,
FReAK
format_c
 2003-10-16 13:31
#5668 #5668
User since
2003-08-04
1706 Artikel
HausmeisterIn
[Homepage] [default_avatar]
Nutzt du VirtualHosts oder zeigt der Apache nur eine Seite an?


Aber zur Einfachheit halber, kannst du sie wie folgt setzen:
Code: (dl )
1
2
chown wwwrun script.pl
chmod 771 script.pl


Das genügt, damit das Script ausgeführt werden kann.

Gruß Alex
FReAK La Marsch
 2003-10-16 14:16
#5669 #5669
User since
2003-08-14
38 Artikel
BenutzerIn
[Homepage] [default_avatar]
Danke für die schnelle Antwort,
aber ich glaub ich hab mich mal wieder falsch ausgedrückt.

Ich arbeite auf dem Rechner als freak und der ist in der Gruppe freak
Mein apache läuft auf dem Rechner alls www-data und ist in der Gruppe www-data.

Wenn ich also chown und chom mache wie du es sagst, dann kann zwar der Apache endlich das Skript ausführen, doch ich kann daran nicht mehr als freak arbeiten. Also müsste ich die Rechte auf 777 setzen und das will ich eigentlich nicht.

Ich hätte gerne eine Lösung, bei der freak ganz normal arbeiten und apache die Skripte ausführen kann.
format_c
 2003-10-16 16:48
#5670 #5670
User since
2003-08-04
1706 Artikel
HausmeisterIn
[Homepage] [default_avatar]
Dann solltest du dir mal das Thema CGI-Wrapper suexec von Apache durchlesen.
Anbei empfehle ich dir noch das Thema VirtualHosts.
Wichtig (steht nicht so explizit drin) Die DocumentRoot Verzeichnisse von den VirtualHosts müssen in dem DocumentRoot des CGI-Wrappers liegen, damit dieser funktioniert.

suexec hat auch ein eigenes ErrorLog woran man schon viele Fehler herauslesen kann.
/var/log/httpd/suexec_log (glaub ich)

Das dir hier zu erklären könnte etwas zu lang werden.
Lies dir die Doku mal durch http://httpd.apache.org/docs/


Gruß Alex
FReAK La Marsch
 2003-10-16 17:37
#5671 #5671
User since
2003-08-14
38 Artikel
BenutzerIn
[Homepage] [default_avatar]
Ah, vielen Dank, das klingt schon recht vielversprechend, jetzt muss ich nur noch lesen und verstehen :-)

Danke!
und noch nen schönen Tag,
FReAK
havi
 2003-10-16 23:24
#5672 #5672
User since
2003-08-04
2036 Artikel
BenutzerIn
[Homepage]
user image
[quote=format_c,16.10.2003, 11:31]Nutzt du VirtualHosts oder zeigt der Apache nur eine Seite an?


Aber zur Einfachheit halber, kannst du sie wie folgt setzen:
Code: (dl )
1
2
chown wwwrun script.pl
chmod 771 script.pl


Das genügt, damit das Script ausgeführt werden kann.

Gruß Alex[/quote]
Hab ich vor kurzer Zeit erst von Strat gelernt...
Naja!

Gruss
betterworld
 2003-10-17 00:42
#5673 #5673
User since
2003-08-21
2613 Artikel
ModeratorIn

user image
Hi.
In das Verzeichnis cgi-bin sollen auch wirklich nur cgi-Scripte rein und nichts anderes. Erstell lieber in Deinem Homeverzeichnis ein Verzeichnis, wo du Dateien erstellen kannst (ich hab mir dazu ein $HOME/cgi-var/ gemacht).

Du kannst die Scripte auch unter dem Benutzernamen freak laufen lassen, wenn Du sie nicht nach /var/www/cgi-bin sondern nach $HOME/public_html/cgi-bin tust. Damit das funktioniert, muss in der /etc/apache/httpd.conf drinstehen:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
<Directory /home/*/public_html/cgi-bin>
Options ExecCGI Indexes Includes FollowSymLinks MultiViews
SetHandler cgi-script
<Limit GET POST OPTIONS PROPFIND>
Order allow,deny
Allow from all
</Limit>
<Limit PUT DELETE PATCH PROPPATCH MKCOL COPY MOVE LOCK UNLOCK>
Order deny,allow
Deny from all
</Limit>
</Directory>

Das funktioniert nur, wenn die Homeverzeichnisse (wie normalerweise immer) /home/username/ heissen.

Im Browser musst Du dann http://host/~freak/cgi-bin/blah.cgi eingeben.

hth
betterworld
FReAK La Marsch
 2003-10-20 18:11
#5674 #5674
User since
2003-08-14
38 Artikel
BenutzerIn
[Homepage] [default_avatar]
Hey Danke,
das klappt ja echt ;-)
<< >> 8 Einträge, 1 Seite



View all threads created 2003-10-16 13:08.