5 minuto(s) estimado(s) de lectura
Permisos en Linux
y sus identificadores
Si comenzamos realizando un $ls -l /ruta
obtendremos algo como la imagen de arriba. La pregunta es que significa las letras de la izquierda, si observamos primero detectaremos que se muestra un primer carácter, el cual representa el tipo de archivo:
Letra | Tipo de archivo |
---|---|
- | Archivo común |
d | Directorio |
b | Bloques especiales (bin) |
c | Carácteres especiales |
l | Enlace (link) |
Las siguientes letras que se aprecian son las que asignan los permisos y se agrupan en grupos de 3:
Propietario(User)[u] | Grupos[g] | Otros usuarios[o] |
---|---|---|
rwx | rwx | rwx |
La pregunta aquí es ¿qué es r, w y x?, esto se responde con la siguiente tabla:
Letra | Tipo de permiso |
---|---|
- | Sin permiso |
r | Lectura(read) |
w | Escritura(write) |
x | Ejecución(execution) |
En el caso de los último dos se pueden entender mejor de la siguiente forma:
Letra | Archivos | Directorios |
---|---|---|
w | Adquieren permisos para modificarlos | Adquieren permisos para crear archivos en estos |
x | En el caso de ser un fichero puede ejecutarlo | Puede ingresar a estos por ejemplo con un $cd ruta |
Todo esto se puede expresar en formato decimal, aplicando conversión a binario, o sea si contiene un carácter(rwx) es igual a 1 y si no tiene nada(-) es un 0 por ejemplo:
Ejemplo | conversión a binario |
---|---|
rwx r-x r– | 111 101 100 |
rwx r-x r-x | 111 101 101 |
r-x r– r– | 101 100 100 |
rwx rwx rwx | 111 111 111 |
Bien ahora es bueno recordar la conversión de binario a decimal:
27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 |
---|---|---|---|---|---|---|---|
128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
Si es 1 se cuenta, en cambio si es un 0 se pasa al siguiente…
Ejemplo:
Si tenemos el binario 101 esto se leerá de derecha a izquierda, entonces:
1 | 0 | 1 |
---|---|---|
22 | 21 | 20 |
4 * 1 | 2 * 0 | 1 * 1 |
Ahora se suman los resultados multiplicados por el binario:
Resultado final………… |
---|
4 + 0 + 1 |
5 |
Ahora que sabemos como transformar de binario a decimal podemos transformar los ejemplos de los casos rwx, pero en esta ocasión será respetando sus respectivos grupos:
Ejemplo | conversión a binario | decimal propietario | decimal grupo | decimal otros | resultado |
---|---|---|---|---|---|
rwx r-x r– | 111 101 100 | 7 | 5 | 4 | 754 |
rwx r-x r-x | 111 101 101 | 7 | 5 | 5 | 755 |
r-x r– r– | 101 100 100 | 5 | 4 | 4 | 544 |
rwx rwx rwx | 111 111 111 | 7 | 7 | 7 | 777 |
Podemos concluir de la tabla que los valores siempre serán los mismos:
r = 4
w = 2
x = 1
y para que sirve esto…Pues sirve para asignar de una manera más cómoda a través de chmod
el cual es un comando en Linux para asignar permisos. Ejemplo:
Si queremos convertir el siguiente permiso al directorio:
[drwxr--r--]
user> chmod 755 directorio
Daría como permisos al directorio [drwxr-xr-x]
O si nos complica hacer esto también podemos hacerlo ocupando las letras:
user> chmod g+x,o+x
Daría como permisos al directorio exactamente lo mismo [drwxr-xr-x]
También tenemos otra serie de privilegios especiales como por ejemplo, el caso de chattr
que nos permite controlar permisos avanzados:
user> chattr +i -V apuntes.txt
---
Flags of apuntes.txt set as ----i---------------
Esto se vería solo con $lsattr apuntes.txt
. Pues este privilegio nos hace proteger el recurso, hasta el punto de que ni siquiera el usuario root pueda eliminarlo.