• Şuradasınız
  • Anasayfa
  • cPanel,Linux
  • cPanel Dosya izinleri ve Sahipliğini otomatik düzeltmek

cPanel Dosya izinleri ve Sahipliğini otomatik düzeltmek

Merhaba,

Bugün cPanel sunucumdaki siteleri bir başka sunucuya cPanel Transfer Tool ile aktardıktan sonra ilgili sitenin kök ve sub dizinlerinde permission ve ownership sorunlarıyla karşı karşıya kaldım.Daha önce de karşılaştığımda blog yazılarımda chmod ve chown komutlarını kullanarak ufak bir bash script yazıp sizlerle paylaşmıştım.Şimdi biraz daha güzelini bulduğum için sizlerle paylaşmak istedim.

Script :

#! /bin/bash
#
# Date: Jan 26th 2012
# Author: Colin R.
# Revisions: Jacob "Boom Shadow" Tirey (boomshadow.net)
# Fixperms script for ServInt
#
#   Fixperms script for cPanel servers running suPHP or FastCGI.
#   Written for ServInt.net
#   Copyright (C) 2012 Colin R.
#
#   This program is free software: you can redistribute it and/or modify
#   it under the terms of the GNU General Public License as published by
#   the Free Software Foundation, either version 3 of the License, or
#   (at your option) any later version.
#
#   This program is distributed in the hope that it will be useful,
#   but WITHOUT ANY WARRANTY; without even the implied warranty of
#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#   GNU General Public License for more details. http://www.gnu.org/licenses/


# Set verbose to null
verbose=""


#Print the help text
helptext () {
    tput bold
    tput setaf 2
    echo "Fix perms script help:"
    echo "Sets file/directory permissions to match suPHP and FastCGI schemes"
    echo "USAGE: fixperms [options] -a account_name"
    echo "-------"
    echo "Options:"
    echo "-h or --help: print this screen and exit"
    echo "-v: verbose output"
    echo "-all: run on all cPanel accounts"
    echo "--account or -a: specify a cPanel account"
    tput sgr0
    exit 0
}

# Main workhorse, fix perms per account passed to it
fixperms () {

  #Get account from what is passed to the function
  account=$1

  #Check account against cPanel users file
  if ! grep $account /var/cpanel/users/*
  then
    tput bold
    tput setaf 1
    echo "Invalid cPanel account"
    tput sgr0
    exit 0
  fi

  #Make sure account isn't blank
  if [ -z $account ]
  then
    tput bold
    tput setaf 1
    echo "Need an account name!"
    tput sgr0
    helptext
  #Else, start doing work
  else
    tput bold
    tput setaf 4
    echo "Fixing perms for $account:"
    tput setaf 3
    echo "------------------------"
    tput setaf 4
    echo "Fixing website files...."
    tput sgr0
    #Fix individual files in public_html
    find /home/$account/public_html -type d -exec chmod $verbose 755 {} \;
    find /home/$account/public_html -type f | xargs -d$'\n' -r chmod $verbose 644
    find /home/$account/public_html -name '*.cgi' -o -name '*.pl' | xargs -r chmod $verbose 755
    chown $verbose -R $account:$account /home/$account/public_html/*
    find /home/$account/* -name .htaccess -exec chown $verbose $account.$account {} \;

    tput bold
    tput setaf 4
    echo "Fixing public_html...."
    tput sgr0
    #Fix perms of public_html itself
    chown $verbose $account:nobody /home/$account/public_html
    chmod $verbose 750 /home/$account/public_html

    #Fix subdomains that lie outside of public_html
    tput setaf 3
    tput bold
    echo "------------------------"
    tput setaf 4
    echo "Fixing any domains with a document root outside of public_html...."
    for SUBDOMAIN in $(grep -i document /var/cpanel/userdata/$account/* | awk '{print $2}' | grep home | grep -v public_html)
    do
	tput bold
	tput setaf 4
	echo "Fixing sub/addon domain document root $SUBDOMAIN...."
	tput sgr0
	find $SUBDOMAIN -type d -exec chmod $verbose 755 {} \;
	find $SUBDOMAIN -type f | xargs -d$'\n' -r chmod $verbose 644
  	find $SUBDOMAIN -name '*.cgi' -o -name '*.pl' | xargs -r chmod $verbose 755
    chown $verbose -R $account:$account $SUBDOMAIN
    find $SUBDOMAIN -name .htaccess -exec chown $verbose $account.$account {} \;
    done

	#Finished
    tput bold
    tput setaf 3
    echo "Finished!"
	echo "------------------------"
	printf "\n\n"
    tput sgr0
  fi

  return 0
}

#Parses all users through cPanel's users file
all () {
    cd /var/cpanel/users
    for user in *
    do
	fixperms $user
    done
}

#Main function, switches options passed to it
case "$1" in

    -h) helptext
	;;
    --help) helptext
	    ;;
    -v) verbose="-v"

	case "$2" in

		-all) all
		       ;;
		--account) fixperms "$3"
			   ;;
		-a) fixperms "$3"
		    ;;
		*) tput bold
     		   tput setaf 1
		   echo "Invalid Option!"
		   helptext
		   ;;
	esac
	;;

    -all) all
	  ;;
    --account) fixperms "$2"
      	 	;;
    -a) fixperms "$2"
	;;
    *)
       tput bold
       tput setaf 1
       echo "Invalid Option!"
       helptext
       ;;
esac


Öncelikle script’in çalışması için scripti indirelim.

wget http://sametyilmaz.com.tr/fixperms.sh

Eğer sadece bir kullanıcın dizinindeki izinleri düzenlemek isterseniz aşağıdaki komutu koşturmanız gerekir.

sh ./fixperms.sh -a kullaniciadi

Eğer sadece bir kullanıcının dizindeki izinleri düzenlemek isterseniz ve verbose yani script’in ayrıntılı olarak ne yaptığını gormek isterseniz -v parametresini eklemeniz yeterlidir.

sh ./fixperms.sh -v -a kullaniciadi

Eğer sunucudaki bütün siteler için bunu yapmak istiyorsaniz

sh ./fixperms.sh -all

Yine script ne yaptıgıyla ilgili ayrıntılı bir çıktı almak isterseniz -v parametresini eklemeniz yeterlidir.

sh ./fixperms.sh -v -all

Kaynak : http://boomshadow.net/tech/fixes/fixperms-script/

Benzer Yazılar

Yorumlar

Yorum Yazın

Su elementleri kullanabilirsiniz : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>


dokuz + iki =

Arama
RSS
Beni yukari isinla