Αυτό είναι βασισμένο σε CentOS server με Apache 2.x.
Πλέον δεν χρειάζεται η εγκατάσταση του module για να κάνετε chmod τα config files σε 666 ή να ανεβάσετε/συνάψετε φακέλους με 777. Επειδή με αυτό το module ενεργοποιημένο τα πάντα στο HTTP θα τρέχουν με αυτό και όχι μέσω του ‘apache’.
** Εάν χρησιμοποιείτε mod_ruid αντί για mod_ruid2, πρώτα απ’ όλα αφαιρέστε τη γραμμή mod_ruin από το μονοπάτι ‘/etc/httpd/conf/httpd.conf’
Αρχικά, θα ενεργοποιήσουμε libcap-devel
1 |
yum -y install libcap-devel |
Αφού αυτό έχει γίνει θα κατεβάσουμε και θα εγκαταστήσουμε το mod_ruid2.
1 2 3 4 |
wget -O mod_ruid2-0.9.8.tar.bz2 "http://downloads.sourceforge.net/project/mod-ruid/mod_ruid2/mod_ruid2-0.9.8.tar.bz2?r=&ts=1335638772&use_mirror=kent" tar xjf mod_ruid2-0.9.8.tar.bz2 cd mod_ruid2-0.9.8 apxs -a -i -l cap -c mod_ruid2.c |
Τώρα, εάν δεν πάρετε errors, to mod_ruid2 θα πρέπει να έχει εγκατασταθεί και προστεθεί στο ‘etc/httpd/conf/httpd.conf’
Ας βεβαιωθούμε ότι προστέθηκε σωστά.
1 |
grep 'mod_ruid2' /etc/httpd/conf/httpd.conf |
Εάν πάρετε κάποια απάντηση σαν αυτή, τότε έχει προστεθεί.
1 |
LoadModule ruid2_module /usr/lib/apache/mod_ruid2.so |
Τώρα πρέπει να μετατρέψουμε τα DA httpd.conf πρότυπα λίγο για να ενεργοποιήσουμε το mod_ruid2 για τους χρήστες.
Τώρα αντιγράψτε τα αρχεία των προτύπων στο custom
1 2 3 |
cd /usr/local/directadmin/data/templates/ cp virtual_host2* custom/ chown -R diradmin:diradmin custom/ |
Τώρα έχετε αντιγράψει τα αρχικά πρότυπα στον ‘custom” φάκελο, οπότε δεν θα σβηστούν
1 |
cd /usr/local/directadmin/data/templates/custom/ |
Τώρα ακολουθήστε τα βήματα για κάθε virtual_host2 αρχείο που έχετε αντιγράψει.
1 |
nano -w virtual_host2.conf |
Αντικαταστήστε τη γραμμή:
1 |
SuexecUserGroup |USER| |GROUP| |
Με:
1 |
#SuexecUserGroup |USER| |GROUP| |
Προσθέστε τις γραμμές από κάτω με τη γραμμή που μόλις αντικαταστήσατε.
1 2 3 |
RMode config RUidGid |USER| |GROUP| RGroups apache |
Σώστε τα αρχεία και ξαναγράψτε τα HTTPd config files.
1 |
echo "action=rewrite&value=httpd" >> /usr/local/directadmin/data/task.queue |
Εάν θέλετε μπορείτε να αρχίσετε την επανεγγραφή των HTTPd config files χειροκίνητα, απλά επικολλήστε τη γραμμή από κάτω και περιμένετε μέχρι να τελειώσει.
1 |
/usr/local/directadmin/dataskq d800 |
Αφού τελειώσει η επανεγγραφή μπορείτε να επανακκινήσετε το HTTPd με την εντολή από κάτω.
1 |
/etc/init.d/httpd restart |
Τώρα το mod_ruid2 πρέπει να είναι εγκατεστημένο και δεν χρειάζεστε το chmod άλλο, π.χ. ‘chmod 666 config.php’ ή ‘chmod777 uploads’.
Για να είστε σίγουροι ότι οι πελάτες webmail λειτουργούν ακόμη πρέπει να αλλάξουμε τις άδειες του owner.
1 |
chown -R webapps:webapps /var/www/html |
Τέλος, πρέπει να αλλάξετε το httpd-directories.conf
1 |
nano -w /etc/httpd/conf/extra/httpd-directories.conf |
Προσθέστε τη γραμμή RUidGid κάτω από το between και το and
1 2 3 4 5 6 7 8 9 10 11 |
Options -Indexes FollowSymLinks AllowOverride All Order allow,deny Allow from all suPHP_Engine On suPHP_UserGroup webapps webapps SetEnv PHP_INI_SCAN_DIR RUidGid webapps webapps |
Q: How can I test this is working?
A: Easy, install some CMS that you are used before. Like WordPress, Joomla that required (before!!) chmod 666 or 777 to get install/working.
Q: I’ve dirs/files owned by apache for some users, must I change this?
A: Yes, you need to give the dirs/files owner of the user itself, not apache anymore. Check below
To fix the owner permissions of the dirs/files
1 2 3 4 5 6 7 |
cd /usr/local/directadmin/scripts && ./set_permissions.sh user_homes find /home/*/domains/*/public_html -type d -print0 | xargs -0 chmod 711 find /home/*/domains/*/public_html -type f -print0 | xargs -0 chmod 644 find /home/*/domains/*/public_html -type f -name '*.cgi*' -exec chmod 755 {} \; find /home/*/domains/*/public_html -type f -name '*.pl*' -exec chmod 755 {} \; find /home/*/domains/*/public_html -type f -name '*.pm*' -exec chmod 755 {} \; cd /usr/local/directadmin/data/users && for i in `ls`; do { chown -R $i:$i /home/$i/domains/*/public_html;}; done; |
* Added ‘&&’ so if they do a typo, it won’t change anything.
Finally, if you have problem with perl it should be root:root and not root:apache:
1 |
chown root:root /usr/bin/perl |
source: http://forum.directadmin.com/showthread.php?t=37467