Αυτό είναι βασισμένο σε 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