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:
- Iniciar sesión como usuario root en el servidor WHM con SSH
- Conocer el nombre de usuario de la cuenta que se desea restablecer
- 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