Todo archivo tiene permisos asignados a los distintos usuarios, los usuarios se dividen en:
Owner: es el dueño del archivo, y si no se cambia, tiene la mayor jerarquía, tambien llamado User.
Group: se puede crear grupos de usuarios para darle a todos o varios los mismos permisos. A estos usuarios le corresponden el cuarto, quinto y sexto caracter de los permisos de usuarios y tienen mayor jerarquía que el último.
World: también llamado “otros”, es cualquier otro usuario que no pertenezca a un grupo de usuario y tampoco sea el dueño, este tiene la menor jerarquía.
Una vez que ya sabemos los distintos usuarios que hay en un archivo, pasemos a los permisos que tienen dichos usuarios, los permisos son las capacidades y limitaciones que tiene un respectivo usuario con un archivo, esto es útil ya que de esta manera podemos proteger nuestros archivos y evitar que algún usuario no deseado los manipule sin nuestro permiso. Basicamente hay tres permisos, un usuario puede o no puede:
Read: leer el contenido del archivo, se representa con una “r”
Write: escribir o editar el contenido del archivo, se representa con una “w”
Execute: ejecutar el contenido de un archivo (si es que es ejecutable), se representa con una “x”
Para ver los permisos ejecutamos el comando ls -l
así veríamos de forma detallada la informacion de nuestros archivos
En la terminal se vería de esta manera:
Expliquemos que significan esos símbolos al principio, el primer símbolo a la izquierda, si es un guion significa que es un archivo, y si es una d significa que es un directorio o carpeta, seguido despues de esto, vemos que hay unas letras, recuerda lo que significa cada letra, r es permiso de lectura, w es permiso para editar, y x es permiso para ejecutar, el guion en ese caso significa que no hay permisos. Ahora bien, tenemos que saber como esta organizado eso, como dijimos, el primer símbolo a la izquierda se refiere a un archivo si es un guion o una carpeta si es una d, despues hay que leerlo en grupos de tres, es decir, los siguientes tres símbolos representan los permisos para el Owner o dueño del archivo, luego los siguientes tres símbolos representan los permisos del Group o grupo de usuarios, y los últimos tres símbolos representan los permisos de World o los “otros usuarios”
Por lo tanto como leeríamos los siguientes permisos de usuario:
Aplicando lo explicado anteriormente vemos que nota.txt, es un archivo (ya que tiene un guion al principio) y el Owner (es decir los primeros tres símbolos despues del guion) tiene permisos de leer, editar y ejecutar el archivo, luego en el caso del Group tiene permisos de leer, editar pero NO tiene permiso de ejecutar el archivo, y por último World tiene exactamente los mismos permisos que Group.
Ok, ahora que tenemos claro esto, vamos a ver como cambiar dichos permisos, esto lo hacemos con el comando
chmod
Supongamos que quiero conceder TODOS los permisos a TODOS los usuarios para nota.txt, lo haríamos de la siguiente manera:
Como el Owner o “usuario principal” ya tenía todos los permisos no lo mencionamos (aunque si quisieramos modificarlo se representa con la letra “u” de user) nos centramos en el Group y World o “others”, como vemos despues de chmod nos referimos al Group con la letra “g” y para añadirle un permiso escribimos un “+” y la letra que representa el permiso que queremos añadir, en este caso queríamos añadir el permiso de ejecutar, el cual es una “x” y lo mismo hacemos con World que se representa con la letra “o” y le añadimos el permiso para ejecutar el archivo, por otro lado si mas bien quisieramos quitarle algun permiso, en vez de poner “+” ponemos “-” para lograrlo ¿sencillo verdad?
Sin embargo, hay otra forma para cambiar los permisos, y es a traves del sistema octal, el sistema octal es el sistema de numeración posicional cuya base es igual 8, los numeros van del 0 al 7, entender completamente esto quiza es un poco confuso al principio (mas que nada si no conoces los fundamentos de la computacion) ya que tiene que ver con los bits y bytes, pero tranquilo/a, lo explicare de la forma mas sencilla posible y despues lo veras como algo para niños.
Primero que nada recordemos que las posiciones de los bits tienen valores, de derecha a izquierda empieza en el 1, el segundo bit vale 2, el tercer bit vale 4 y así sucesivamente se va multiplicando por 2 hasta llegar al octavo bit en la izquierda, entonces el ultimo bit a la izquierda tiene un valor de 128 (si te cuesta entender que es un bit y un byte y como funcionan, no te preocupes que aqui en Platzi hay un curso de fundamentos de ingenieria de software que me ayudo a mi personalmente a entenderlo y las primeras clases lo explican de manera muy sencilla, te dejo la clase que lo explica AQUÍ) cuando tenemos una serie de bits como por ejemplo 10101011 solo se toman en cuenta los valores donde hay un 1, donde hay un 0 NO se toma en cuenta, entonces solamente sumamos los valores donde hay un 1, de esta manera calculamos cuanto vale un numero binario, esto nos interesa porque así es que podemos definir los permisos en Linux, ya que:
Como podemos ver aqui, el 1 significa verdadero y 0 significa falso, entonces en la imagen tendriamos permisos tanto de leer, escribir y ejecutar el archivo ¿pero porque el 7? porque estamos sumando los valores de los bits 111, el primer numero a la derecha vale 1, el segundo numero vale 2, y el tercer numero vale 4, esos valores sumados dan 7, entonces si queremos darle todos los permisos al usuario basta con que pongamos 7, y el sistema entiende que eso significa que todos los permisos estan permitidos, pongamos otro ejemplo:
En este caso el resultado es 6 porque el 0 no se toma en cuenta, osea que ese valor en esa posicion no se suma con los demas y como ya sabemos, el segundo numero de derecha a izquierda vale 2, y el tercer numero vale 4, 4 + 2 es 6, entonces ya vemos que el 6 representa que el usuario tendria permisos para leer, para escribir pero NO para ejecutar el archivo.
Por lo tanto, se pueden cambiar los permisos con el comando chmod, y se veria de esta manera:
Vemos que para el archivo index.html estamos cambiando los permisos poniendo 766, el primer numero de izquierda a derecha es el Owner, el segundo numero es el Group o grupo de usuarios y el ultimo es World o “others”, entonces al final esto daria como resultado que el usuario principal tiene todos los permisos porque pusimos el 7, el grupo de usuarios tiene todos los permisos excepto el de ejecutar porque pusimos el 6 y cualquier otro usuario igualmente tiene todos los permisos excepto ejecutar porque tambien pusimos un 6. ¿Un poco enredado no? es normal, pero como todo, una vez le pones la atencion necesaria y lo entiendes, terminas como yo haciendo un post en Platzi para ayudar a los demas a que comprendan como cambiar los permisos de usuario en un sistema Linux 😁👌
A continuacion pondre una tabla que resume todo esto:
Esto seria el resumen del sistema de permisos octal de Linux con base en el sistema binario.