restablecer permisos cpanel

A veces los permisos de carpetas y archivos pueden entrar en conflicto, especialmente si está moviendo cuentas a diferentes servidores o renombrando una cuenta de Cpanel. Además, los propietarios de cuentas pueden erróneamente establecer una carpeta a 777, lo cual es una mala noticia e innecesario en un servidor Cpanel.

¿Por qué usar este script?

Utiliza este script para restablecer los permisos y la propiedad de archivos y carpetas en una cuenta de usuario de Cpanel. Este script iterará a través de los archivos de la cuenta Cpanel de un usuario en public_html y establecerá la carpeta a 0755 y los archivos a 0644.

NOTA: Antes de empezar necesitas:

  1. Iniciar sesión como usuario root en el servidor WHM con SSH
  2. Conocer el nombre de usuario de la cuenta que se desea restablecer
  3. Instalar el script fixperms.sh en /root/fixperms.sh.

Reemplace {username} con el nombre de usuario que desea reparar.

/root/fixperms.sh {username}

A continuación se muestra el script para instalar en el servidor WHM.

Sólo tiene que instalarlo en /root/ en su servidor y llamarlo fixperms.sh. Este es el contenido:

#######################################################
#!/bin/bash
# Script to fix permissions of accounts
 
if [ "$#" -lt "1" ];then
        echo "Must specify user"
        exit;
fi
 
USER=$@
 
for user in $USER
do
 
        HOMEDIR=$(grep $user /etc/passwd | cut -d: -f6)
 
        if [ ! -f /var/cpanel/users/$user ]; then
                echo "$user user file missing, likely an invalid user"
 
        elif [ "$HOMEDIR" == "" ];then
                echo "Couldn't determine home directory for $user"
 
        else
 
                echo "Setting ownership for user $user"
 
                        chown -R $user:$user $HOMEDIR
                        chmod 711 $HOMEDIR
                        chown $user:nobody $HOMEDIR/public_html $HOMEDIR/.htpasswds
                        chown $user:mail $HOMEDIR/etc $HOMEDIR/etc/*/shadow $HOMEDIR/etc/*/passwd
 
                echo "Setting permissions for user $USER"
 
                      find $HOMEDIR -type f -exec chmod 644 {} \; -print
                      find $HOMEDIR -type d -exec chmod 755 {} \; -print
                      find $HOMEDIR -type d -name cgi-bin -exec chmod 755 {} \; -print
                      find $HOMEDIR -type f \( -name “*.pl” -o -name “*.perl” \) -exec chmod 755 {} \; -print
                fi
done
#######################################################

Script con Cloudlinux y PHP-FPM activado

Si utilizamos Cloudlinux y tenemos CageFS y el PHP-FPM activado en nuestras cuentas, el contenido del fichero fixperms.sh variará un poco, aquí os dejamos el contenido:

#!/bin/bash
# Script to fix permissions of accounts

if [ "$#" -lt "1" ];then
        echo "Must specify user"
        exit;
fi

USER=$@

for user in $USER
do

    HOMEDIR=$(egrep "^${user}:" /etc/passwd | cut -d: -f6)

    if [ ! -f /var/cpanel/users/$user ]; then
        echo "$user user file missing, likely an invalid user"

    elif [ "$HOMEDIR" == "" ];then
        echo "Couldn't determine home directory for $user"


    else

        echo "Setting ownership for user $user"

        chown -R $user:$user $HOMEDIR
        chmod 711 $HOMEDIR
        chown $user:nobody $HOMEDIR/public_html $HOMEDIR/.htpasswds
        chown $user:mail $HOMEDIR/etc $HOMEDIR/etc/*/shadow $HOMEDIR/etc/*/passwd

        echo "Setting permissions for user $USER"

        find $HOMEDIR -type f -exec chmod 644 {} \; -print
        find $HOMEDIR -type d -exec chmod 755 {} \; -print
        find $HOMEDIR -type d -name cgi-bin -exec chmod 755 {} \; -print
        find $HOMEDIR -type f \( -name "*.pl" -o -name "*.perl" \) -exec chmod 755 {} \; -print

        chmod 750 $HOMEDIR/public_html

        if [ -d "$HOMEDIR/.cagefs" ]; then
            chmod 775 $HOMEDIR/.cagefs
            chmod 700 $HOMEDIR/.cagefs/tmp
            chmod 700 $HOMEDIR/.cagefs/var
            chmod 777 $HOMEDIR/.cagefs/cache
            chmod 777 $HOMEDIR/.cagefs/run
        fi
    fi
done

Anexo: Reparar todas las cuentas al mismo tiempo

Si se quiere reparar todas las cuentas del servidor, con el comando de abajo puedes hacer un arreglo de permisos en todo el servidor que iterará a través de todos los usuarios y reparará los permisos.

AVISO: si tienes muchas cuentas en el servidor, esto puede tardar un poco, siempre usalo con cuidado y haciendo un snapshot del servidor por precaución.

for i in `ls -A /var/cpanel/users` ; do ./root/fixperms.sh $i ; done