Joomla y permisos de directorios



Funcionar con Permisos

Visión General

Joomla! se podría instalar, desde 0, con permisos chmod 700 para carpetas y chmod 600 para archivos y después administrarlo sin problemas, a la hora de agregarle extensiones, o, configurarlo en su conjunto desde la administración ...y también se podría instalar, desde 0, con permisos chmod 777, tanto para archivos como para carpetas, y obtener, aparentemente, un mismo resultado.
Sin embargo, ni uno; ni otro extremo, arriba indicados, guardan una relación ajustada, a nivel global y generalizando, entre la Funcionalidad web y la Seguridad web de nuestros sitios, por los que vamos a permitir el acceso público.

En el primer caso, con "chmod 700/600", laFuncionalidad estaría tan restringida que, solo el propietario de los archivos y carpetas de ese espacio web, podría navegar por la misma y administrarlo; sin embargo, nuestraSeguridad, sería muy elevada, porque la capacidad de interacción por parte de terceros con los archivos y carpetas de nuestro espacio web, con acceso público, se vería muy mermada.

En el segundo caso, con "chmod 777", la Funcionalidad sería muy amplia; porque tanto el propietario (dueño de un archivo o carpeta), como el grupo (conjunto de privilegiados con acceso a una zona en particular), como otros (público en general) tendrían la mayor capacidad de interacción que se le puede dar a archivos y carpetas del espacio público. Por ese motivo, mantener la Seguridad de nuestro espacio web, con acceso público, se convertiría en "ardua tarea".

A partir de esas premisas y sin entrar en afinamientos de archivos o carpetas en particular pertenecientes a Joomla!, se podría determinar que, a nivel global y generalizando, dentro de nuestro espacio web, con acceso público, el punto de equilibrio base, entre la funcionalidad y la seguridad web de nuestros sitios, lo podríamos encontrar concediendo:

Permiso chmod 755 para carpetas y chmod 644 para archivos.("chmod 755/644")

Con esta combinación, solo el propietario de los archivos y carpetas puede escribir sobre los mismos en su espacio web, lo cual, nos permite guardar un equilibrio ajustado entre la Funcionalidad y la Seguridad de nuestro sitio.

Es decir y por ejemplo, desde la administración de Joomla!, se podría modificar la configuración global, hojas de estilo CSS o templates e instalar extensiones sin "Problemas de permisos", solo por el propietario .(cada uno de nosostros en su propio espacio web.. que no en el ajeno)

Si, en lugar de permisos chmod 644 para archivos, los hubiéramos dejado en chmod 444, como propietarios y desde la administración de Joomla!, podriamos leer la configuración global y también podríamos leer una hoja de estilo CSS o un template; pero, a la hora de guardar o aplicar los cambios en dichos archivos, tendríamos "problemas de permisos" por no poder escribir sobre los mismos.. y no se nos dejaría aplicar los cambios.

Esto mismo, se podría extender a los permisos de carpeta que, si en lugar de dejarlas en chmod 755las dejamos en chmod 555 , a la hora de instalar extensiones o subir archivos... tendríamos "Problemas de permisos" y no se nos permitiría realizar la operación de subir los archivos de la extensión y por ende impedir instalarla con éxito, aún siendo propietarios de ese espacio público.

El modelo, chmod 555 para carpetas y chmod 444 para archivos, merma nuestra capacidad de administrar el sitio, de tal modo que, para modificar algo del espacio web, primero, hay que concederle permisos suficientes a la parte implicada que queramos modificar, como pudiera ser, el archivo configuration.php para aplicar cambios en la configuración global, o, la carpeta templates para instalar una nueva plantilla.

Y esto, se podría restringir aún más por según que zonas; sin embargo, nos vamos a centrar en el modelo "chmod 755/644" para "webs normales" ..dejando entrever, a lo largo de esta exposición de ideas, otras posibilidades que, tal vez, podrían resultar de utilidad para los sitios de desarrollo ("chmod 700/600"), o, para sitios de demostración ("chmod 555/444" .. una vez se ha instalado y configurado el CMS + Extensiones) y otras, que no nos interesan de ningún modo, cuando buscamos seguridad ("chmod 777")...

...a fin de que, cuando uno sepa exactamente lo que se está haciendo en este tema, pueda adentrarse en el aprender a desenvolverse en la asignación de permisos chmod para archivos y carpetas en el espacio público, discriminándolos según sean del tipo público y que necesitarán ser leidos por otros para que funcione la web, o, del tipo confidencial que no necesitarán ser LeidosEscritos o Ejecutados 
por otros para que funcione la web (esto último, podría considerase como un exceso, pero puede resultar una excelente práctica en la aplicación de conceptos, con la cual y sin lugar a dudas, estaríamos poniendo "los puntos sobre las ies")

Sugerencias
1º Comprobar que, como propietarios, podemos interactuar con el servidor web.

Puede resultar confuso el tema de los permisos, principalmente, cuando "en la práctica, no funciona el asunto".

Es muy importante comprender que, los archivos y carpetas de tu espacio web, podrían tener asigando a un "propietario equivocado", con lo cual y por ejemplo, sobre-escribir el archivo configuration.php , desde la administración de Joomla!, te sería "misión imposible"; sin embargo, tú, eres el propietario del archivo... has de poder hacerlo!!

De no tener claro ese punto, acláralo con quien te sirve el hospedaje, por ejemplo, con una pregunta del tipo:

"Oigan, ¿Que nombre de propietario tengo que usar en mi web, sobre archivos y carpetas, para que, con permisos chmod 644 o chmod 755, sea yo el único que pueda escribir sobre mis archivos o carpetas?. Gracias"

Ese mismo nombre del propietario correcto, evidentemente, también os permitirá, según los permisos chmod que tenga asignado un archivo o carpeta, otras posibilidades, como pueda ser que, solo el propietario pueda leerescribirejecutar archivos en su espacio web.. es solo por preguntarlo a quien os sirva hospedaje, de un modo que no de pié a "respuestas raras".

En el caso de que os respondan que "No podeis ser realmente Propietarios de los archivos o carpetas en vuestro espacio web".. mal vamos, porque realmente nos están diciendo "Necesitas conceder permisos chmod XXpara poder administrar tu sitio". En pocas palabras, para (Propietario de una web con acceso público) poder LeerEscribir, y/o Ejecutar archivos desde la administración de Joomla!.. se lo tienes que permitir también a otros (cualquiera que tenga conexión a internet).Y, como no, puede que encuentres con que, por ejemplo, tras subir "Via FTP" los archivos y carpetas de tu "espacio web", estos, queden con un nombre de "propietario y grupo incorrecto", con lo cual, quien nos sirve el hospedaje nos aclarará el tema del "Propietario y Grupo apropiado que tienes que usar", o, sobre los pasos a seguir para configurarlo apropiadamente y ya!

Para cambiar masiva y recursivamente el nombre del Propietario y Grupo de todo el espacio web, si dispones servicio SSH, via Shell, se puede recurrir a instrucciones de este tipo:Cambia el Propietario y Grupo, por los indicados, en archivos y carpetas desde la carpeta "joomla" hacia abajo.
Código:
chown -R propietario:grupo /ruta/hacia/joomla
Cambia solo el Propietario, por el indicado, en archivos y carpetas desde la carpeta "joomla" hacia abajo.
Código:
chown -R propietario /ruta/hacia/joomla
Cambia solo el Grupo, por el indicado, en archivos y carpetas desde la carpeta "joomla" hacia abajo.
Código:
chgrp -R grupo /ruta/hacia/joomla
2º Asignar permisos chmod, según corresponda, en el espacio web
Una vez tenemos archivos y carpetas con Propietario y Grupo apropiados, el resto, es un muy sencillo de comprender si prestais atención y practicais un poco con ello.


Tenemos tres tipos de Identidades (PropietarioGrupoOtros) y tres tipos de Permiso (Lectura, Escritura, Ejecución). Siempre en ese orden.


A cada una de las Identidades, le podemos asignar Permisos específicos, siendo que, con la Vista numérica:

El Pemiso de Lectura, para cualquier Identidad, siempre sumará 4, si ha sido habilitado, y, en caso contrario, sumará 0

El Pemiso de Escritura, para cualquier Identidad, siempre sumará 2, si ha sido habilitado, y, en caso contrario, sumará 0


El Pemiso de Ejecución, para cualquier Identidad, siempre sumará 1, si ha sido habilitado, y, en caso contrario, sumará 0

Según los permisos habilitados/deshabiltados de cada identidad, se obtendrá una suma distinta.

Relación Numérica con los Permisos

0 = Ningún permiso (Lectura = 0 + Escritura = 0 + Ejecución = 0)
1 = Permiso de Ejecución (Lectura = 0 + Escritura = 0 + Ejecución = 1)
2 = Permiso de Escritura (Lectura = 0 + Escritura = 2 + Ejecución = 0)
3 = Permiso de Escritura y Ejecución (Lectura = 0, Escritura = 2Ejecución = 1)
4 = Permiso de Lectura (Lectura = 4 + Escritura = 0 + Ejecución = 0)
5 = Permiso de Lectura y Ejecución (Lectura = 4 + Escritura = 0 + Ejecución = 1)
6 = Permiso de Lectura y Escritura (Lectura = 4 + Escritura = 2 + Ejecución = 0)
7 = Permiso de Lectura, Escritura y Ejecución (Lectura = 4 + Escritura = 2 + Ejecución = 1)


Luego, por cada Identidad, podemos obtener un número comprendido entre 0 y 7, que delimitarán por Identidad, claramente, sus privilegios en particular sobre un archivo o carpeta.

¿Entonces, que es, por ejemplo, chmod 644?
Son los Permisos que tiene asignados cada Identidad, sobre un archivo o carpeta, según su Relación Numérica. Siempre siguiendo este orden:

Propietario = (Puede Leer y Escribir)
Grupo = (solo puede Leer)
Otros = (solo puede Leer)

chmod 755555444600400, etc, etc, a la hora de leerlos o interpretarlos por nuestra parte, se puede conseguir deduciéndolo o calculándolo... hasta dominarlo al dedillo, como cuando se aprenden las tablas de multiplicar.


Para cambiar masiva y recursivamente los permisos chmod de nuestro espacio web, si disponemos de conexión SSH, viaShell se puede recurrir a instrucciones de este tipo:

Para cambiar los permisos de Directorios, en este caso a chmod 755:

Código:
find /ruta/hacia/joomla -type d -exec chmod 755 {} \;

Para cambiar los permisos de Archivos, en este caso a chmod 644:

Código:
find /ruta/hacia/joomla -type f -exec chmod 644 {} \;
3º Disfrutar del poder Funcionar con Permisos.
Ahora, tras salvar todo lo anterior, ya estás preparado para poder Funcionar con Permisos, la administración de Joomla!, "responde bien y sin hacerte cosas raras" del tipo:

"¿Como que no me deja cambiar la Configuración Global con permisos chmod 600 en el archivo configuration.php?"

.. la curva de aprendizaje se incrementará en gran medida, porque, en ese sentido, "todo está respondiendo como toca".

No te olvides, cuando instales extensiones, de comprobar sus permisos chmodpropietario y grupo con el que quedan los archivos/carpetas, y, a buscar un mismo equilibrio ajustado entre la funcionalidad y la seguridad de tu stio, dependiendo del tipo de web que estes usando.


Ultima parte comandos para aplicar 755/644
Cambiar los permisos a los ficheros y carpetas de Joomla

Comentarios

Entradas populares