Cpanel空间重置文件及文件夹权限

作者:admi... 点击数: 0 收藏到会员中心
最后编辑时间: 2025-02-12 16:16

您可以在用户CPANEL文件管理器里面管理设置简单的权限,但是在某些情况下无法应用于某些程序,像MAGENTO2。在多次复制移动后文件夹的权限会产生错误,可以使用以下命令进行重置权限,请使用ROOT用户登录后执行

cd /tmp
wget https://raw.githubusercontent.com/PeachFlame/cPanel-fixperms/master/fixperms.sh 
sh ./fixperms.sh -a USER-NAME

如果想重置所有用户的文件夹的话请使用

cd /tmp
wget  https://raw.githubusercontent.com/PeachFlame/cPanel-fixperms/master/fixperms.sh
sh ./fixperms.sh -all


sh脚本内容

#! /bin/bash
# 
# License: GNU General Public License v3.0
# See the Github page for full license and notes:
# https://github.com/PeachFlame/cPanel-fixperms
#

# Set verbose to null
verbose=""

# Print the help text
helptext () {
    tput bold
    tput setaf 2
    echo "Fix Permissions (fixperms) 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 "--account or -a: Specify a cPanel account"
    echo "-all: Run on all cPanel accounts"
    echo "-v: Verbose output"
    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 user files
    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 a cPanel account!"
        tput sgr0
        helptext
    # Else, start doing work
    else

        # Get the account's homedir
        HOMEDIR=$(egrep "^${account}:" /etc/passwd | cut -d: -f6)

        tput bold
        tput setaf 4
        echo "(fixperms) for: $account"
        tput setaf 3
        echo "--------------------------"
        tput setaf 4
        echo "Fixing website files..."
        tput sgr0

        # Fix owner of public_html
        chown -R $verbose $account:$account $HOMEDIR/public_html

        # Fix individual files in public_html
        find $HOMEDIR/public_html -type d -exec chmod $verbose 755 {} \;
        find $HOMEDIR/public_html -type f | xargs -d$'\n' -r chmod $verbose 644
        find $HOMEDIR/public_html -name '*.cgi' -o -name '*.pl' | xargs -r chmod $verbose 755
        # Hidden files support - ref: https://serverfault.com/a/156481
        # Fix hidden files and folders like .well-known/ with root or other user perms
        chown $verbose -R $account:$account $HOMEDIR/public_html/.[^.]*
        find $HOMEDIR/* -name .htaccess -exec chown $verbose $account.$account {} \;

        tput bold
        tput setaf 4
        echo "Fixing public_html itself..."
        tput sgr0
        # Fix perms of public_html itself
        chown $verbose $account:nobody $HOMEDIR/public_html
        chmod $verbose 750 $HOMEDIR/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 docroot outside public_html..."
        for SUBDOMAIN in $(grep -i documentroot /var/cpanel/userdata/$account/* | grep -v '.cache\|_SSL' | awk '{print $2}' | grep -v public_html)
        do
            tput bold
            tput setaf 4
            echo "Fixing sub/addon domain docroot for $SUBDOMAIN..."
            tput sgr0
            chown -R $verbose $account:$account $SUBDOMAIN;
            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
            chmod $verbose 755 $SUBDOMAIN
            find $SUBDOMAIN -name .htaccess -exec chown $verbose $account.$account {} \;
        done

        # Finished
        tput bold
        tput setaf 3
        echo "Finished! (User: $account)"
        echo "--------------------------"
        printf "\n\n"
        tput sgr0
    fi

    return 0
}

# Parses all users via cPanel's users/domains file
all () {
    for user in $(cut -d: -f1 /etc/domainusers)
    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


请登录已经激活账号继续浏此文章所有内容!
会员中心

已经有帐号啦 !赶紧同小伙伴们愉快地玩耍吧

立即登录

还没有账号? 马上注册一个新帐户

注册账号
热点标签:
内容说明:
如您需要转载本文请保留以下信息是对作者发文的支持与尊重:

Cpanel空间重置文件及文件夹权限 来源于 https://www.magentola.com/news-read-343.html
上一篇:M2.3 MYSQL数据库服务CPU (INSERT INTO search_tmp_)占用过高
下一篇:M2单个域名Apache设置子目录下访问实例
相关内容
产品推荐