Cambiar permisos de archivos y recomendaciones para WordPress en un sistema Linux

Para fortalecer tu instalación de WordPress, tener el conjunto recomendado de permisos de archivo es importante. A continuación hay algunas recomendaciones recopiladas de la web.

Primero, tenemos un breve resumen de las recomendaciones:

# restablecer a valores seguros por defecto
find /usr/share/wordpress -exec chown www-data:www-data {} \;
find /usr/share/wordpress -type d -exec chmod 755 {} \;
find /usr/share/wordpress -type f -exec chmod 644 {} \;

# permitir a wordpress administrar wp-config.php (pero prevenir acceso mundial)
chgrp www-data /usr/share/wordpress/wp-config.php
chmod 660 /usr/share/wordpress/wp-config.php

# permitir a wordpress administrar .htaccess
chgrp www-data /usr/share/wordpress/.htaccess
chmod 664 /usr/share/wordpress/.htaccess

# permitir a wordpress administrar wp-content
find /usr/share/wordpress/wp-content -exec chgrp www-data {} \;
find /usr/share/wordpress/wp-content -type d -exec chmod 775 {} \;
find /usr/share/wordpress/wp-content -type f -exec chmod 664 {} \;

Esto es principalmente para aquellos que tienen prisa y solo quieren ir al grano. Básicamente estás intentando limitar quién puede hacer qué en tu servidor web. A continuación están las instrucciones de wordpress.org sobre cómo administrar permisos con más detalle: Obtenido de: http://codex.wordpress.org/Changing_File_Permissions En los sistemas de archivos de computadoras, diferentes archivos y directorios tienen permisos que especifican quién y qué puede leerlos, escribirlos, modificarlos y acceder a ellos. Esto es importante porque WordPress puede necesitar acceso de escritura a archivos en tu directorio wp-content para habilitar ciertas funciones.

Modos de permisos

  7       5     5
 usuario grupo  mundo
 r+w+x  r+x    r+x
 4+2+1  4+0+1  4+0+1  = 755

El modo de permiso se calcula sumando los siguientes valores para el usuario, el grupo del archivo y para todos los demás. El diagrama muestra cómo.

  • Lectura 4 - Permitido leer archivos

  • Escritura 2 - Permitido escribir/modificar archivos

  • eJecutar 1 - Leer/escribir/eliminar/modificar/directorio

    7 4 4 usuario grupo mundo r+w+x r r 4+2+1 4+0+0 4+0+0 = 744

Ejemplos de modos de permisos

Ver lista completa de 0000 a 0777. ModoPermisos StrExplicación
0477-r—rwxrwxpropietario tiene solo lectura (4), otros y grupo tienen rwx (7)
0677-rw-rwxrwxpropietario tiene solo rw (6), otros y grupo tienen rwx (7)
0444-r—r—r—todos tienen solo lectura (4)
0666-rw-rw-rw-todos tienen solo rw (6)
0400-r--------propietario tiene solo lectura (4), grupo y otros no tienen permisos (0)
0600-rw-------propietario tiene solo rw, grupo y otros no tienen permisos
0470-r—rwx---propietario tiene solo lectura, grupo tiene rwx, otros no tienen permisos
0407-r-----rwxpropietario tiene solo lectura, otros tienen rwx, grupo no tiene permisos
0670-rw-rwx---propietario tiene solo rw, grupo tiene rwx, otros no tienen permisos
0607-rw----rwxpropietario tiene solo rw, grupo no tiene permisos y otros tienen rwx

Esquema de permisos para WordPress

Los permisos serán diferentes de un host a otro, por lo que esta guía solo detalla los principios generales. No puede cubrir todos los casos. Esta guía aplica a servidores con una configuración estándar (nota, para hosting compartido usando métodos “suexec”, ver más abajo). Típicamente, todos los archivos deben ser propiedad de tu cuenta de usuario (ftp) en tu servidor web, y deben ser escribibles por esa cuenta. En hosts compartidos, los archivos nunca deben ser propiedad del proceso del servidor web en sí (a veces este es el usuario www, o apache, o nobody). Cualquier archivo que necesite acceso de escritura desde WordPress debe ser propiedad o tener propiedad de grupo del cuenta de usuario usada por WordPress (que puede ser diferente de la cuenta del servidor). Los permisos de archivos y carpetas de WordPress deben ser los mismos para la mayoría de los usuarios, dependiendo del tipo de instalación que realizaste y la configuración de umask de tu entorno del sistema al momento de la instalación.

NOTA: Si instalaste WordPress tú mismo, probablemente no necesitas modificar los permisos de archivos. A menos que estés experimentando problemas con errores de permisos, o quieras hacerlo, probablemente no deberías meterte con esto.

Hosting compartido con suexec

Lo anterior puede no aplicar a sistemas de hosting compartido que usan el enfoque “suexec” para ejecutar binarios PHP. Este es un enfoque popular usado por muchos hosts web. Para estos sistemas, el proceso php se ejecuta como el propietario de los archivos php en sí, permitiendo una configuración más simple y un entorno más seguro para el caso específico de hosting compartido.

En tal configuración suexec, el esquema de permisos correcto es simple de entender.

  • Todos los archivos deben ser propiedad de la cuenta del usuario real, no la cuenta de usuario usada para el proceso httpd.
  • La propiedad de grupo es irrelevante, a menos que haya requisitos específicos de grupo para la verificación de permisos del proceso del servidor web.
  • Todos los directorios deben ser 755 o 750.
  • Todos los archivos deben ser 644 o 640. Excepción: wp-config.php debe ser 600 para prevenir que otros usuarios en el servidor lo lean.
  • Ningún directorio debería tener jamás 777, incluso los directorios de carga.

Usar un cliente FTP

Los clientes FTP te permiten establecer permisos para archivos y directorios en tu host remoto. Esta función a menudo se llama chmod o establecer permisos en el menú del programa.

Usar la línea de comandos

Si tienes acceso shell/SSH a tu cuenta de hosting, puedes usar chmod para cambiar permisos de archivos, que es el método preferido para usuarios experimentados. Antes de empezar a usar chmod sería recomendable leer algunos tutoriales para asegurarte de entender qué puedes lograr con él. Establecer permisos incorrectos puede dejar tu sitio fuera de línea, así que por favor tómate tu tiempo.

Puedes hacer que todos los archivos en tu directorio wp-content sean escribibles en dos pasos, pero antes de hacer cada archivo y carpeta escribible, primero deberías probar alternativas más seguras como modificar solo el directorio. Prueba cada uno de estos comandos primero y si no funcionan entonces hazlo recursivo, lo que hará incluso tus archivos de imagen de temas escribibles. Reemplaza DIR con la carpeta en la que quieres escribir

chmod -v 746 DIR
chmod -v 747 DIR
chmod -v 756 DIR
chmod -v 757 DIR
chmod -v 764 DIR
chmod -v 765 DIR
chmod -v 766 DIR
chmod -v 767 DIR

Si esos fallan en permitirte escribir, pruébalos todos de nuevo en orden, pero esta vez reemplaza -v con -R, que cambiará recursivamente cada archivo ubicado en la carpeta. Si después de eso aún no puedes escribir, puedes intentar 777.

Acerca de chmod

chmod es un comando unix que significa “change mode” (cambiar modo) en un archivo. La bandera -R significa aplicar el cambio a cada archivo y directorio dentro de wp-content. 766 es el modo al que estamos cambiando el directorio, significa que el directorio es legible y escribible por WordPress y cualquier otro usuario en tu sistema. Finalmente, tenemos el nombre del directorio que vamos a modificar, wp-content.

Los peligros del 777

El quid de este problema de permisos es cómo está configurado tu servidor. El nombre de usuario que usas para FTP o SSH a tu servidor probablemente no es el nombre de usuario usado por la aplicación del servidor en sí para servir páginas.

  7      7      7
 usuario grupo  mundo
 r+w+x  r+w+x  r+w+x
 4+2+1  4+2+1  4+2+1  = 777

A menudo el servidor Apache es ‘propiedad’ de las cuentas de usuario dhapache o nobody. Estas cuentas tienen una cantidad limitada de acceso a archivos en el servidor, por una muy buena razón. Al establecer tus archivos personales y carpetas propiedad de tu cuenta de usuario como escribibles por el mundo, literalmente los estás haciendo escribibles por el mundo. Ahora los usuarios dhapache y nobody que ejecutan tu servidor, sirviendo páginas, ejecutando intérpretes php, etc., tendrán acceso completo a los archivos de tu cuenta de usuario. Esto proporciona una vía para que alguien obtenga acceso a tus archivos secuestrando básicamente cualquier proceso en tu servidor, esto también incluye cualquier otro usuario en tu máquina. Así que deberías pensar cuidadosamente antes de modificar permisos en tu máquina.

El peor resultado

Lo peor que puede pasar como resultado de usar permisos 777 en una carpeta o incluso un archivo, es que si un cracker malicioso o entidad logra cargar un archivo engañoso o modificar un archivo actual para ejecutar código, tendrán control completo sobre tu blog, incluyendo tener la información de tu base de datos y contraseña.

Encontrar permisos de archivos seguros

El archivo .htaccess es uno de los archivos que es accedido por el propietario del proceso que ejecuta el servidor. Así que si estableces los permisos demasiado bajos, tu servidor no podrá acceder al archivo y causará un error. Ahí radica el método para encontrar las configuraciones más seguras. Comienza demasiado restrictivo y aumenta los permisos hasta que funcione.

Ver también