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
