FollowSymlinks σε cgi-bin directory στον Apache

Alexandros Kosiaris alex at noc.grnet.gr
Fri Apr 24 15:16:33 EEST 2009


George Notaras wrote:
> George Miliotis (Corfiot) wrote:
>>
>> On 23/4/2009 6:07 μμ, George Notaras wrote:
>>> 2) να κάνω ένα central installation του awstats και παράλληλα ο κάθε
>>> χρήστης να μπορεί να το τρέχει ως cgi script. Στην περίπτωση αυτή είναι
>>> σχεδόν αναγκαστική η χρήση symlink προς το awstats.pl μέσα στο
>>> script-aliased directory, εκτός κι αν κάθε φορά που γίνεται update του
>>> central installation του awstats μεταφέρεται το εκτελέσιμο awstats.pl
>>> στον κατάλληλο script-aliased κατάλογο του κάθε χρήστη.
>> Μπορεί να εξετάσεις και την πιθανότητα να κάνεις ένα ξεχωριστό vhost για
>> τα διαχειριστικά σου (phpmyadmin, awstats, munin, mpla mpla mpla) και να
>> μην βάλεις κανένα alias. Δεν ξέρω αν αυτό σε ικανοποιεί σε αυτό το κομμάτι;
>>
>> Όσο για τα permissions, μάλλον για suexec σε βλέπω...
> 
> Ευχαριστώ. Με προβλημάτισε συγκεκριμένα το awstats γιατί δεν έχει
> φτιαχτεί με το σκεπτικό του central installation όσον αφορά τη χρήση του
> ως cgi script, οπότε αναγκαστικά θα γίνουν κάποιες αλχημείες.

Ναι. Δυστυχώς το awstats έχει κάποια θέματα με το που θα γράφει τα
αρχεία .txt του και με τα permissions των log files(εάν θες να
ενεργοποιήσεις τα update from web commands κτλ). Παρόλα αυτά μπορεί να
γίνει central installation για πολλά vhosts. Δεν είναι κάτι υπερβολικά
δύσκολο.

> 
> θα χρησιμοποιήσω το suexec για τα permissions. Thanks
> 
> Και κάποιες γενικότερες ερωτήσεις (απευθυνόμενος και προς όλους).
> 
> Λόγω του ότι ο apache εκτελεί όλα τα php scripts ανεξαρτήτως
> virtualhost, πιθανότατα το πρόβλημα που περιγράφτηκε προηγουμένως με τα
> permissions και την ανάγνωση του περιεχομένου αρχείων άλλου χρήστη στα
> οποία έχει πρόσβαση το process του apache, εξακολουθεί να υπάρχει για
> όλα τα virtualhosts στα οποία είναι ενεργοποιημένα τα php scripts. (Ή
> κάνω λάθος;)

Κακώς ο apache σου εκτελεί όλα τα php scripts ανεξαρτήτως virtualhost.
Είτε με το mod_php είτε μέσω CGI μπορείς να αποφασίσεις ποια
virtualhosts θα έχουν η όχι δυνατότητα να έχουν PHP

Παραδείγματος χάρη εγώ χρησιμοποιώντας mod_cgid(και όχι mod_fcgid γιατί
απλά δεν ασχολήθηκα ποτέ να το στήσω) έχω ANA Directory ANA VirtualHost
που με ενδιαφέρει το απλό(και OXI μέσα στο κεντρικό configuration σε
κάνα <Directory /> directive)

<VirtualHost TADE>
<Directory DEINA>
	Action php4-script /cgi-bin/php4
	AddHandler php4-script .php
</Directory>
</VirtualHost>

Προφανώς πολύ εύκολα κάνεις το ίδιο με mod_php
	AddType application/x-httpd-php .php
        AddType application/x-httpd-php-source .phps

Το /cgi-bin είναι ένα κοινό script-alias για όλα τα virtualhosts. Εκεί
μέσα υπάρχει μόνο το php4 cgi και τίποτε άλλο(και εάν δεν έχεις root στο
μηχάνημα δεν μπαίνει και τίποτε άλλο εκεί)

Για cgi-bin directories ανά Virtualhost(ξέχωρα δηλαδή από το cgi-bin)
ορίζω πράγματα της μορφής
Alias /cgi-local /path/to/cgi-local
<Directory /path/to/cgi-local>
                Options +ExecCGI
</Directory>

> 
> Η χρήση του παρακάτω μέσα σε κάθε virtualhost θα λύσει το πρόβλημα?
> 
> SuexecUserGroup <user> <group>
Θα σου λύσει το πρόβλημα των permissions αλλά το πρόβλημα που
περιγράφεις πιο πάνω με την php να είναι enabled παντού είναι τελείως
άλλο πράγμα και σου είπα πως να το λύσεις πιο πάνω.

> 
> Τρέχω την php ως fastcgi μέσω του mod_fcgid. Αν χρησιμοποιούσα το
> mod_php θα μπορούσα να κάνω χρήση του παραπάνω directive (SuexecUserGroup)?

Τσου. Το mod_php σημαίνει ότι ο κώδικας εκτελείται από τον apache και
άρα δεν έχει νόημα το suexec μία και είναι μόνο για CGI. Για mod_php
χρησιμοποιείς open_basedir και παλιότερα έβαζες και safe_mode αλλά είναι
πλέον deprecated και δεν σου προτείνω να το χρησιμοποιήσεις.
> 
> Επίσης, ας πάρουμε το υποθετικό σενάριο ότι υπάρχει μεγάλος αριθμός από
> virtualhosts και ότι τα php scripts τρέχουν ώς fastcgi με την ταυτόχρονη
> χρήση του suexec. Αν την ίδια χρονική στιγμή επισκεφτεί κανείς όλα τα
> virtualhosts, λόγω του suexec, δεν θα τρέξουν και τόσα php-cgi processes
> όσα είναι και τα virtualhosts που προσπελάστηκαν? Αυτό δεν προκαλεί
> υπερβολική κατανάλωση πόρων στο server?
Θεωρητικά έχεις δίκιο. Πρακτικά δεν ξέρω σε πιο σημείο θα σε δαγκώσει
αυτό που περιγράφεις. Επιπλέον εάν έχεις μεγάλο αριθμό από VirtualHosts
δεν είναι και φοβερά πιθανό το σενάριο που περιγράφεις.

Εάν τα (πολλά θυμήσου είπες) Virtualhosts σου είναι τόσο δημοφιλή ώστε
να συμβαίνει μάλλον θα χρειαστεί να τα απομονώσεις σε dedicated
hardware. Αλλά όταν φτάσεις εκεί θα βγάζεις λεφτά από τα virtualhosts
σου εικάζω και δεν θα σε ενοχλεί.

-- 
Alexandros Kosiaris 	Network Operation Center , GRNET S.A.
e-mail : alex at noc.grnet.gr
Public Key Fingerprint :
D6B1 0634 BE65 719C 6C95  7492 8201 4B46 C478 F074




More information about the Linux-greek-users mailing list