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
Es un comando que permite cambiar los permisos de un archivo o directorio.
Los permisos se dividen en 3 partes, y son:
Los permisos que existen son 3:
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.
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.
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í:
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í:
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…
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.
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.
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
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.
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.
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
También puedes ver una serie de ejercicios resueltos: Ejercicios resueltos con chmod, chgrp y chown.
Hoy te voy a presentar un creador de credenciales que acabo de programar y que…
Ya te enseñé cómo convertir una aplicación web de Vue 3 en una PWA. Al…
En este artículo voy a documentar la arquitectura que yo utilizo al trabajar con WebAssembly…
En un artículo anterior te enseñé a crear un PWA. Al final, cualquier aplicación que…
Al usar Comlink para trabajar con los workers usando JavaScript me han aparecido algunos errores…
En este artículo te voy a enseñar cómo usar un "top level await" esperando a…
Esta web usa cookies.
Ver comentarios