Permisos de ficheros en WordPress

Los permisos de ficheros son siempre elemento de discordia en cuanto a funcionamiento, seguridad y todo lo que hay alrededor de WordPress. Pero ¿cuáles son los permisos que WordPress necesita para funcionar?

La respuesta, como suele ser habitual, es «depende». Y ¿de qué depende? De tu hosting y de cómo se gestionan sus usuarios.

Pero antes, vamos a ver ligeramente qué significan los distintos permisos. En este caso sólo vamos a ver los permisos en Linux, aunque en Windows funcionan de forma similar.

Qué significan los números de los permisos

Por resumir, cuando subimos nuestro WordPress al servidor tenemos 2 tipos: archivos y carpetas. Un archivo es un contenedor de contenido (texto, imagen, etc…) y una carpeta es un lugar donde agrupar archivos.

Tanto unos como otros han de tener ciertos permisos, que son 3: lectura, escritura y ejecución.

Y por otro lado, tenemos números de 3 cifras. La primera hace referencia al propietario del archivo, el segundo al grupo al que pertenece ese usuario y el tercero al resto de usuarios.

Con esta mezcla, por norma general tendremos 2 tipos de numeración.

Permisos para carpetas

En el caso de las carpetas, para poder acceder a ellas, necesitamos que sean de «ejecución». La diferencia pues, estará en si son de sólo lectura o lectura y escritura.

  • Escritura: W (Write)
  • Lectura: R (Read)
  • Ejecución: X (eXecute)

De esta forma, las carpetas, en un principio, podrían ser así:

PropietarioGrupoOtros
WXRWXRW-R

Como en un hosting puede entrar el propietario u otros usuarios del mismo grupo (otros desarrolladores) dejaríamos permisos para que ellos también puedan hacer lo mismo que el propietario. Sí que está claro que si algún otro usuario intenta hacer algo, podría ejecutar y mirar una carpeta, pero no modificarla.

Permisos para archivos

En el caso de los archivos, no necesitamos que sean de ejecución en ningún momento, ya que no vamos a ejecutar ningún programa. En este caso los ficheros serán sólo de lectura y escritura según sea necesario.

  • Escritura: W (Write)
  • Lectura: R (Read)
  • Ejecución: X (eXecute)

De esta forma, los archivos, en un principio, podrían ser así:

PropietarioGrupoOtros
W-RW-R--R

Como en un hosting puede entrar el propietario u otros usuarios del mismo grupo (otros desarrolladores) dejaríamos permisos para que ellos también puedan hacer lo mismo que el propietario. Sí que está claro que si algún otro usuario intenta hacer algo, podría ejecutar y mirar una carpeta, pero no modificarla.

Los números

Lo más habitual es que veamos códigos del tipo 644, o 775. ¿Qué significan estos números? Esta es la combinación de los WXR en numeración.

SímbolosNumeraciónExplicación
---0No hay permisos de ningún tipo.
--x1Hay permisos de ejecución.
-w-2Hay permisos de escritura.
-wx3Hay permisos de escritura y ejecución.
r--4Hay permisos de lectura.
r-x5Hay permisos de lectura y ejecución.
rw-6Hay permisos de lectura y escritura.
rwx7Todos los permisos.

Permisos en un hosting compartido

Cuando estamos en un hosting compartido, lo habitual es que el sistema pueda tener varios usuarios de FTP, y que todos ellos compartan el mismo grupo. De esa forma, hay un usuario que es el propietario, y hay otros que son los que están en el mismo grupo. En este caso, tendríamos que el propietario y el grupo han de tener siempre los mismos permisos, y el resto, los mínimos necesarios para funcionar.

Si lo hacemos así, los permisos para todos los ficheros de un WordPress serían:

  • Carpetas: rwxrwxr-x / 775
    Con esto se podrá entrar en las carpetas y leer sus contenidos. Los que tengan usuario podrán escribir en ellas.
  • Archivos: rw-rw-r-- / 664
    En este caso siempre se podrá leer el contenido de los archivos. Los que tengan usuario, podrán escribir en ellos.

En el caso de WordPress, todos los ficheros deberían tener estos permisos. En ningún caso hay que darle permisos de ejecución a un archivo, y tampoco tiene sentido darle permisos de escritura al resto de usuarios.

Si alguien te recomienda poner a las carpetas 777 o 666, ten cuidado, porque es probable que el problema no sea de permisos, sino de algo que está mal en alguna otra configuración.

Permisos en un VPS / dedicado

Cuando hablamos de un hosting dedicado, un VPS o de un sistema en el que el control del sistema se tiene por parte de un administrador de sistemas, la cosa cambia. En estos casos se puede ser extremadamente restrictivos, ya que depende mucho de quién es el propietario de los archivos y carpetas.

En estos casos, podemos reducir la casuística sobre todo con respecto a seguridad. En la mayoría de casos, los servicios que hay en el servidor (por ejemplo el Apache o nginx) se pueden encontrar en el mismo grupo de los usuarios, y si este es el caso «no hay más usuarios».

Con esto tendríamos como 3 niveles: tú / webmaster (propietario), el propio WordPress (grupo) y otros usuarios.

Si lo hacemos así, los permisos para todos los ficheros de un WordPress serían:

  • Carpetas: rwxr-x--- / 750
    Con esto se podrá entrar en las carpetas y leer sus contenidos. Los usuarios podrán escribir en ellas. Otros usuarios no tendrían acceso.
  • Archivos: rw-r----- / 640
    En este caso siempre se podrá leer el contenido de los archivos. Los usuarios podrán escribir en ellos. Otros usuarios no tendrían acceso.

Este sería el caso extremo, que en general tampoco es necesario. lo más habitual será ser más liviano con los permisos y dejar una configuración más laxa.

  • Carpetas: rwxr-xr-x / 755
  • Archivos: rw-r--r-- / 644

Por tu seguridad

En cualquiera de los casos, como habrás podido comprobar, nunca se da permisos de escritura al último de los 3 bloques, y sólo se da permisos de ejecución a las carpetas, nunca a los archivos.


Sobre este documento

Este documento está regulado por la licencia EUPL v1.2, publicado en WP SysAdmin y creado por Javier Casares. Por favor, si utilizas este contenido en tu sitio web, tu presentación o cualquier material que distribuyas, recuerda hacer una mención a este sitio o a su autor, y teniendo que poner el material que crees bajo licencia EUPL.