linux

Chmod y permisos de archivos en Linux

Introducción

Linux es un sistema operativo robusto y poderoso. Permite cambiar los permisos de los archivos y directorios para que sólo algunos usuarios puedan leerlos, escribirlos o ejecutarlos. Hoy veremos una pequeña introducción a chmod y permisos de archivos en Linux

¿Qué es chmod y permisos de archivos en Linux?

Es un comando que permite cambiar los permisos de un archivo o directorio.

¿Permisos a quién?

Los permisos se dividen en 3 partes, y son:

  • usuario (el dueño, también conocido como owner. Es el creador del archivo)
  • grupo (el grupo al que pertenece el archivo)
  • resto del mundo (los que no son ninguno de los dos de arriba)

¿Cuáles permisos?

Los permisos que existen son 3:

  • Lectura (r o read): leer el archivo, o verlo
  • Escritura (w o write): eliminar o editar el archivo
  • Ejecución (x o eXecute): ejecutar el archivo en caso de que sea un ejecutable o script

¿Cómo se asignan los permisos?

La sintaxis básica es:

chmod NIVEL_DE_PERMISOS NOMBRE_DE_ARCHIVO_O_DIRECTORIO

Sin que sepas nada de este comando, aquí hay un ejemplo que le da todos los permisos a todos los grupos al fichero index.php:

chmod 777 index.php

Y aquí uno que quita todos los permisos a todos los grupos:

chmod 000 index.php

En este caso 777 y 000 son los permisos que le asignamos al archivo. Sigue leyendo para que entiendas cómo funcionan.

Explicación de permisos

Modo octal

Este modo es el que usamos arriba y es con números. Es octal porque está en base octal, o sea, va del 0 al 7. Tenemos por ejemplo este número:

777

El primer 7 es para el usuario. El segundo es para el grupo y el tercero para el resto del mundo. O sea que en este…

750

El 7 es para el usuario, el 5 para el grupo y el 0 para el resto del mundo.

¿Y cómo sale el 7, el 5 o el 0, y todos los demás números?

Cada número se divide de nuevo en 3 permisos que son RWX como se vio arriba. Siempre van en ese orden. Ahora practiquemos un poco de binario y recordemos que son ceros o unos.

Son 3 bits. El de la derecha es el LSB y vale 1. El del centro vale 2 y el de la izquierda (que por cierto es el MSB) 4. Al sumarlos, nos dará siempre un número octal.

Entonces si un bit está en 1, suma el valor. Si no, no pasa nada. Así:

Octal a decimal para entender Chmod y permisos de archivos en Linux

No te confundas. Veamos lo que está en verde. Primero tenemos a 111, y hasta arriba de color amarillo el 4, el 2 y el 1.

Si está en 1, se suma dicho valor. Y si no, no. Como en este caso los 3 están en uno, sumamos 4 + 2 + 1 = 7 y por eso vale siete

Sigamos con el ejemplo y ahora vamos a la segunda fila. Es 101 y por lo tanto está 4 y 1, ya que el de 2 está en 0. Por lo tanto 4 + 1 = 5

En el penúltimo tenemos 000 así que suma a 0. Y finalmente tenemos que no está 4 ni 2, sólo 1. Así que suma 1.

Ahora míralo así:

Read, Write y Execute con Chmod y permisos de archivos en Linux

Si queremos que tenga permiso para leer, dejamos el primer bit en 1. Si queremos que para escribir, dejamos el segundo bit en 1 y si queremos que ejecute dejamos el tercer bit en 1. Por lo tanto…

Si queremos que sólo lea, pero no escriba ni ejecute, el valor sería 4.

Ahora, ese valor va por cada grupo. Más abajo veremos ejemplos…

Ejemplos

Quiero que el usuario o dueño tenga todos los permisos, el grupo sólo lea y el resto del mundo no haga nada.

Comencemos por el usuario. Como tendrá todos los permisos su valor es 7. Ahora para el grupo cómo sólo va a leer tendrá el valor 100 que se traduce a 4 en octal. Y el resto del mundo no hará nada así que queda en 0.

Finalmente el número queda así:

740

Y lo aplicamos al archivo hola.txt así:

chmod 740 hola.txt

Y así es como funciona. Por cierto, si queremos que sea un directorio lo hacemos con -R así:

chmod 740 -R fotos

Lo que haría el comando de arriba sería asignarle al directorio llamado fotos (y a todo su contenido, cuidado con esto) esos permisos.

Modo letras

Este me parece más fácil y si no te gusta el octal esta es tu oportunidad. Ahora utilizamos las letras de rwx así como son, y las letras u, g y o.

  • u quiere decir usuario, es el dueño
  • g quiere decir grupo
  • o quiere decir el resto del mundo

No te espantes, es más fácil de lo que parece. Si quieres que tenga un permiso, lo pones. Y si no, no. Por ejemplo, esto:

u=rw

Le dice a chmod que el usuario puede sólo leer y escribir, más no ejecutar. En cambio esto:

u=rwx

Le dice a chmod que el usuario puede leer, escribir y ejecutar. Y esto:

u=

Le dice a chmod que el usuario no puede hacer nada, o sea, no leer, no escribir y no ejecutar. Lo mismo para el grupo.

Por ejemplo, si queremos que el grupo tenga todos los permisos:

g=rwx

Y si queremos que el resto del mundo sólo pueda leer:

o=r

Ahora veamos ejemplos

Ejemplos

Quiero que el usuario o dueño tenga todos los permisos, el grupo sólo lea y el resto del mundo no haga nada.

Entonces quedará con u=rwx para el usuario. Luego g=r porque el grupo sólo lee y finalmente o= porque el resto del mundo no hará nada.

Lo aplicamos al archivo hola.txt así:

chmod u=rwx,g=w,o= hola.txt

Como se puede observar, separamos por comas a cada sección. Y si queremos que sea un directorio con todo su contenido lo hacemos con -R

chmod -R u=rwx,g=w,o= tareas

Con eso tenemos.

Sudo

Cabe mencionar que si queremos asignar los permisos y no somos los dueños, se nos denegará. Para ello, si tenemos acceso root escribirmos “sudo” antes de chmod.

Bonus: calculadora chmod

Si no entiendes o quieres probar en vivo, cambiando permisos a tu gusto y viendo el comando que generaría, te invito a probar una calculadora chmod que genera comandos dependiendo de lo que elijas: generador de comandos chmod

Bonus 2: ejercicios resueltos

También puedes ver una serie de ejercicios resueltos: Ejercicios resueltos con chmod, chgrp y chown.

Encantado de ayudarte


Estoy disponible para trabajar en tu proyecto, modificar el programa del post o realizar tu tarea pendiente, no dudes en ponerte en contacto conmigo.

No te pierdas ninguno de mis posts

Suscríbete a mi canal de Telegram para recibir una notificación cuando escriba un nuevo tutorial de programación.
parzibyte

Programador freelancer listo para trabajar contigo. Aplicaciones web, móviles y de escritorio. PHP, Java, Go, Python, JavaScript, Kotlin y más :) https://parzibyte.me/blog/software-creado-por-parzibyte/

Ver comentarios

Compartir
Publicado por
parzibyte

Entradas recientes

Imprimir PDF con Bot de Telegram

La impresión de un PDF en cualquier impresora se puede automatizar con un bot de…

14 horas hace

Enviar mensaje con bot de Telegram usando JavaScript (lado del cliente)

Hoy te enseñaré cómo enviar un mensaje a un usuario desde un bot de Telegram…

1 día hace

PHP: incrustar imagen en base64

El día de hoy te enseñaré algo muy sencillo pero útil al programar con PHP:…

1 día hace

Plugin ESC POS – Actualización 3.4.0: imprimir HTML

El plugin para imprimir en impresoras térmicas alcanza hoy su versión 3.4.0 agregando soporte para…

2 días hace

JavaScript (lado del cliente): leer pixeles de imagen

En ocasiones es necesario leer los pixeles y colores de una imagen con JavaScript del…

1 semana hace

PHP y JavaScript: llenar select con AJAX

Siguiendo con los tutoriales de listas desplegables o select con JavaScript, vamos a ver cómo…

1 semana hace

Esta web usa cookies.