v1.Lenny-cz.2

05-30-09

Dziś próbując uruchomić svn’a na serwerze wydałem ( oczywiście z root’a ) głupią komendę:

chown www-data:www-data * -R

Tylko że zamiast byćw katalogu /var/www/svn bylem w /var/www. Generalnie spieprzyłem uprawnienia wszystkich stron, kont pocztowych itp. Że zdarzyło mi się takie coś po raz trzeci bodajże to sie wkurzyłem i postanowiłem napisać skrypcik który naprawi uprawnienia /var/www dla ISPConfiga2 gdzie identyfikatory są ustawione na [domain]. Więc nie owijając w bawełnę:
Link do pliku: restore_premissions

Treść nalezy skopiować, zapisać i nadać uprawnienia do wykonania

chmod +x restor_permissions
#! /bin/bash
#Shrek ISPConfig2 Permissions script
#Variables
root=root:root
www=www-data
no=.no_delete
dir=/var/www
 
echo "Restoring Permissions of $dir"
 
#Gets web[0-9]* directories into table
ls -alh $dir | grep drwx | grep -e "[0-9][0-9]:[0-9][0-9] web[0-9]" | awk '{print $9}' > .web_dirs
n=1
exec < .web_dirs
while read line
do
        web_dirs_list[$n]=$line
        n=$n+1
done
 
#echo ${#web_dirs_list[@]}
no_of_dirs=${#web_dirs_list[@]}
 
for ((k=1;k<=no_of_dirs;k++))
do
        web=${web_dirs_list[$k]}
        echo $web
        #Owning a web[0-9] directory to www-data:web[0-9]
        chown www-data:$web /var/www/$web -R
        #Owning root permission files
        chown $root $dir/$web/cgi-bin/$NO
        chown $root $dir/$web/log/error.log
        chown $root $dir/$web/log/$NO
        chown $root $dir/$web/phptmp/$NO
        chown $root $dir/$web/ssl/$NO
        chown $root $dir/$web/user/$NO
        #Owning User files
        #Getting user namse/dirs
        ls -alh $dir/$web/user/ | grep drwx | awk '{print $9}' | grep -e ".[a-z]_[a-z]" > .users
        m=1
        exec < .users
        while read line
        do
                user_list[$m]=$line
                m=$m+1
        done
 
        #echo ${user_list[@]}
        no_of_users=${#user_list[@]}
        echo $no_of_users
        zero=0
        if(($no_of_users>=$zero ))
        then
                #Owning files to their owners
                for((x=1;x<=$no_of_users;x++))
                do
                        user=${user_list[$x]}
                        echo "$web/user/$user"
                        chown $user:$web $dir/$web/user/$user -R
                        chown $root $dir/$web/user/$user/.antivirus.rc
                        chown $root $dir/$web/user/$user/.autoresponder.rc
                        chown $root $dir/$web/user/$user/.html-trap.rc
                        chown $root $dir/$web/user/$user/.local-rules.rc
                        chown $root $dir/$web/user/$user/.mailsize.rc
                        #Some users does not have .procmailrc file
                        chown $root $dir/$web/user/$user/.procmailrc
                        chown $root $dir/$web/user/$user/.quota.rc
                        chown $root $dir/$web/user/$user/.spamassassin.rc
                        chown $root $dir/$web/user/$user/.user_prefs
                        chown $root $dir/$web/user/$user/.vacation.msg
                done
                no_of_users=0
                unset user_list[*]
        fi
        #Owning symlinks
        symlink=`ls -alh /var/www | grep $web | grep lrwx | awk '{print $9}'`
        echo $symlink
        chown $www:$web $dir/$symlink
rm -f .users
rm -f .web_dirs
done

Data wpisu: 30 Maj, 2009 godzina: 10:50 pm kategoria: Adminowanie, ISPConfig2, . Możesz śledzić komentarze do tego wpisu, przez kanał RSS 2.0. Zostaw komentarz, lub ping z własnego bloga.

Zostaw odpowiedź