Cómo dar permisos de acceso a un directorio web en GNU/Linux

Permisos de acceso a ficherosd

Ahora vengo a compartir un pequeño, pero muy pequeño HOWTO. Se trata de un par de acciones para configurar los permisos de archivos y directorios en un servidor web Linux, y unas pocas explicaciones para saber el porqué hay que dar estos permisos..

La mayoría de los servidores web de Internet corren sobre sistemas operativos Linux. En estos sistemas operativos se establecen usuarios y los recursos del sistema operativos tienen unos permisos de acceso. De esta forma hay propietarios de los directorios y de los ficheros, con lo que los servidores web tienen que tener permiso para poder acceder a dichos ficheros. De lo contrario no podrán servir las páginas web.

Fíjate que no es lo mismo dar permisos de acceso, que poner el propietario y grupo. En este post me centro sólo en los permisos de acceso.

Un poco de teoría

Dicho lo anterior, tenemos que cada servicio de un servidor de páginas web Linux estándar corre con un usuario. Por ejemplo, el servidor web Apache corre en algunos sistemas con el usuario y grupo www-data. Lo siguiente a tener en cuenta es que entonces Apache tendrá acceso a los ficheros de su usuario, a los de su grupo, y quizá a los otros usuarios si éstos lo han permitido.

Por otro lado, tenemos que los ficheros tienen establecidos unos permisos de acceso. Si hacemos ‘ls -l’, igualmente si vemos con FileZilla o con un explorador de ficheros, veremos por ejemplo:

drwx------ 2 jaime jaime 4096 jun 19 2017 directorio1
-rw-rw-r-- 1 jaime jaime 23 ago 11 2016 fichero1
drwxrwxr-x 3 jaime jaime 4096 nov 17 2016 directorio2

Aquí tenemos que fijarnos en que la primera columna, tendremos 7 letras/signos. La primera es especial, que nos dice el tipo de fichero, luego hay 3 grupos de 3 letras/signos que establecen los permisos. Si nos fijamos en cada grupo, tendremos 3 posiciones en cada grupo:

  • Permiso de lectura.
  • Permiso de escritura.
  • Permiso de ejecución.

Vamos a fijarnos en el fichero1, tenemos el primer signo que es – que indica que es un fichero normal y corriente. Luego en los 3 grupos siguientes tenemos:

  • rw- permiso de lectura y escritura para el usuario.
  • rw- permiso de lectura y escritura para el grupo.
  • r– sólo permiso de lectura para todos los demás usuarios.

Cómo cambiar los permisos de un archivo

Tenemos dos formas de hacerlo, una es usando las letras, otra usando números. Primero vamos a ver por ejemplo cómo dar permiso de lectura al usuario:

chmod u+r fichero

Ahora escritura al grupo:

chmod g+w fichero

Ahora ejecución a todos los demás usuarios:

chmod o+x fichero

Si lo que queremos es quitar permisos, en vez de usar + tenemos que usar -. Si por ejemplo queremos quitar a todos el permiso de ejecución, lo que hacemos es lo siguiente:

chmod -x fichero

Cambiando permisos usando números

Me acuerdo de una conversación con un compañero de trabajo, hablábamos sobre la utilidad de saber binario. Pues aquí se aplica, aunque al final te lo acabas sabiendo de memoria y no tienes que saber convertir de binario a decimal 😉 Por ejemplo, para hacer lo mismo de antes pero usando números tenemos que especificar todos los permisos de una vez. Para dar permiso de lectura a todos y ya está sería:

chmod 0444 fichero

Sí, así de simple, porque el 4 corresponde a 100 en binario, con lo que estamos dando el permiso 0 100 100 100, justo lo que listando con ‘ls -l’ correspondería a -r–r–r– en este fichero. Es decir, sólo lectura al usuario, grupo y demás.

Si quisiéramos dar permisos de lectura, escritura y ejecución al usuario, entonces tendríamos que poner los 3 bits a 1. Esto quedaría en binario como 0 111 100 100, que convertido a decimal queda:

chmod 0744 fichero

Finalmente, qué permisos tenemos que dar a los ficheros y directorios en una web

Finalmente lo que hay que saber, es que para que se ejecuten los PHP y se puedan servir todos los ficheros correctamente en un servidor Apache, tenemos que usar los permisos 0755 para directorios y 0644 para ficheros.

Estos permisos en binario corresponden a:

  • 0755: 0 111 101 101 que es lo mismo que -rwxr-xr-x, para los directorios.
  • 0644: 0 110 100 100 que es lo mismo que -rw-r–r–, para los ficheros.

Para terminar, si quieres dar los permisos correctos a todos los ficheros y directorios de un directorio web, tienes que ejecutar lo siguiente estando en el directorio de la página web:

find . -type d -exec chmod 0755 {} \;
find . -type f -exec chmod 0644 {} \;
Compartir..

Dejar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

cuatro × 2 =