Es muy habitual que necesitemos asignar diferentes permisos a carpetas y ficheros cuando tenemos aplicaciones web open source. Normalmente se recomienda asignar permisos 755 a las carpetas y 644 a los ficheros. Pero hacer puede resultar complicado en algunas ocasiones y vamos a ver cómo hacerlo de forma muy sencilla.

Permisos linux significado

Los permisos de linux son tres:

  • Lectura: permite leer el archivo
  • Escritura: permite modificar el archivo
  • Ejecución: permite ejecutar el archivo

Al mismo tiempo, se pueden dar a diferentes tipos de usuarios:

  • Usuario: tu propio usuario
  • Grupo: a los usuarios de tu grupo
  • Otros: al resto de usuarios que no son de tu grupo

De esta manera, los permisos en linux para un archivo o una carpeta se establecen con un código de 10 caracteres. Por ejemplo:

-r---w---x

Donde el primer caracter nos dice si el archivo es cuestión es un fichero o una carpeta, y el resto en grupos de tres nos dice el permiso que tiene en base a las siglas UGO que vimos antes: usuario, grupo y otros. Entonces, para el ejemplo anterior podemos ver que:

  • Se trata de un fichero, porque sino aparecería una letra "d".
  • El primer grupo de tres caracteres tiene r-- que significa que solo el usuario tiene permiso de lectura.
  • El segundo grupo de tres caracteres tiene -w- que significa que solo el grupo tiene permiso de escritura.
  • El tercer grupo de tres caracteres tiene --x que significa que solo el grupo tiene permiso de ejecución.

Esto también se puede traducir, en formato binario como lo siguiente. Incluyo corchetes para que se vean lo grupos de tres:

0[100][010][001]

En formato octal sería 0651. No se suele usar, aunque también lo podéis ver normalmente como un cero por lo que comenté antes de que normalmente se habla de los permisos de ficheros. Si fuera una carpeta sería un 1 el primer dígito.

Una vez hecha una introducción al significado de los permisos linux vamos a ver cómo modificarlos con un cliente FTP sin tener que usar el comando chmod.

Cambiar permisos linux desde un ciente de FTP

Cuando estamos con un cliente FTP como Firebug, Fillezilla o  WinSCP, normalmente vemos una ventana de este tipo:

Permisos recursivamente con WinSCP

Ahí es muy fácil cambiar los permisos. Solo tenemos que seleccionar o no el check para que aplique los cambios a todos los subdirectorios o no.

Pero claro, hacerlo desde FTP es un proceso muy lento. El FTP manda un comando linux por cada uno de los ficheros, y cada petición es una subida al servidor de manera secuencial. Por lo que si tenemos miles de ficheros, puede convertirse en una tarea muy lenta.

Por eso, lo más rápido es poder lanzar un comando para cambiar permisos en linux desde la propia consola de linux y que esa tarea se realice en cuestión de un momento.

Cambiar permisos de archivos en linux

El comando linux que os voy a enseñar sirve para cambiar los permisos de forma recursiva tanto a las carpetas como a los ficheros. De esta manera, el proceso es mucho más rápido que si lo hacemos desde un cliente FTP.

Para cambiar permisos carpeta linux de forma recursiva el comando que se utiliza es combinándolo con el comando linux find. Por ejemplo:

find /var/www/html/ -type d -exec chmod 755 {} \;

El comando para poder modificar los permisos de los archivos de forma recursiva es por ejemplo:

find /var/www/html/ -type f -exec chmod 644 {} \;

Explicación del comando linux

Os voy a realizar una explicación breve de los elementos que hemos incluido en el comando para que podáis identificarlo por partes por si queréis adaptarlo a vuestras necesidades.

El comando FIND sirve para buscar ficheros. Va a buscar todos los archivos que indiquemos bajo la ruta que le hemos dado. En este caso, todos los archivos que estén bajo la carpeta /var/www/html/.

En linux, todos los archivos y carpetas son archivos para el sistema de ficheros. Entonces para poder distinguir qué son archivos, y cuáles son carpetas, debemos decirle el tipo del archivo que queremos buscar. Por eso le pasamos el parámetro -type d para cuando queremos referirnos a archivos de tipo carpetas, y el parámetro -type f para referirnos a archivos de tipo fichero.

Después con el parámetro EXEC indicamos el comando que debe ejecutar con cada uno, en este caso queremos cambiarle los permisos y para eso utilizamos el comando CHMOD.

Uso de cookies

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.

ACEPTAR
Aviso de cookies