Permisos de Usuario Linux

Los permisos son unos atributos asociados a cada archivo del sistema que indican que puede hacer cada usuario con ese archivo. Como ya hemos comentado, GNU/Linux es un sistema multiusuario, pensado para que varias personas puedan trabajar en la misma máquina (local o remotamente). Cada usuario del sistema pertenece a uno o varios grupos, que permiten organizar a los usuarios y controlar que pueden hacer en el sistema.

Todos y cada uno de los archivos tienen un propietario (el usuario que los creó). El usuario propietario es quien puede modificar los atributos del archivo, y establecer los permisos para que los demás puedan o no utilizar dicho archivo. Por supuesto, el superusuario o root puede modificar los permisos de todos los archivos, aunque no le pertenezcan. Cada uno de los usuarios tiene un grupo por defecto, al que pertenecerán todos sus archivos.

Para codificar los permisos de un archivo, se utilizan 9 bits, repartidos de la siguiente forma:

aaabbbccc

  • aaa indican lo que el propietario del archivo puede hacer con él.
  • bbb indican las acciones que pueden realizar sobre el archivo los usuarios que pertenezcan al grupo de este fichero.
  • ccc indican qué pueden hacer todos los demás usuarios.

Las posibles acciones son 3, cada una de ellas codificadas con un bit:

  • Lectura (r). Primer bit de cada uno de los 3 grupos anteriores.
  • Escritura (W). Segundo bit de cada uno de los 3 grupos anteriores.
  • Ejecución (x). Tercer bit de cada uno de los 3 grupos anteriores.

De manera que si el primer bit del grupo que hemos llamado “aaa” está activado (vale 1) y el resto desactivados (valen 0) significa que el propietario del archivo sólo puede leerlo, no escribir en él ni ejecutarlo. Y lo mismo para el grupo (“bbb”) y el resto de usuarios (“ccc”).

Este es el contenido de un directorio del sistema. Los datos que vemos, ordenados por columnas son:

  1. Permisos del fichero.
  2. Número de enlaces duros de apuntan al fichero.
  3. Usuario propietario.
  4. Grupo del fichero.
  5. Tamaño.
  6. Fecha y hora de la última modificación.
  7. Nombre del fichero.

En este momento del curso nos interesan las columnas 1, 3 y 4. De la primera columna, la primera letra tiene un significado especial: es una ‘d‘ para los directorios y una ‘l‘ para los enlaces simbólicos (más adelante explicaremos este concepto). Las otras 9 letras de esta columna representan los permisos tal y como los hemos explicado anteriormente:

El primer grupo de 3 letras describe qué acciones puede realizar sobre el fichero su propietario (columna 3). Cuando el bit correspondiente está activado, aparece la letra (r, w, x) y cuando lo no está aparece un ‘-‘.

El segundo grupo expresa lo mismo que el primero pero para los usuarios pertenecientes al grupo del fichero (columna 4).

Por último, el tercer grupo indica lo que pueden hacer el resto de usuarios del sistema.

Por ejemplo, el fichero texto2.txt puede ser leído por cualquiera, pero sólo puede modificarlo el usuario jaime (es el único que tiene activada la ‘W‘). Para el fichero texto.txt; el usuario root puede leerlo y modificarlo, los usuarios que pertenezcan al grupo admin podrán leerlo y el resto de usuarios no podrán hacer nada.

Como curiosidad, vemos que el archivo notocar.txt tiene todos sus permisos desactivados. Esto implica que nadie (ni siquiera su propietario) puede leerlo ni modificarlo. Puede parecer absurdo, pero esto protege el archivo de modificaciones accidentales que podrían hacernos perder nuestro trabajo. Por supuesto, el propietario del archivo podría cambiar los permisos cuando lo necesite para leer o modificar el documento. Más adelante veremos cómo es posible cambiar estos permisos.

Hemos visto que al listar el contenido de un directorio, si el bit está activado aparece la letra correspondiente, y si no lo está, aparece un guión. Internamente, tener el bit activado implica que vale 1 y desactivado vale 0. Por tanto, vamos a ver otra forma de expresar los permisos de un fichero, que posteriormente nos servirá para modificarlos.

Dividimos los 9 bits de permisos en los 3 grupos de 3 bits como hemos hecho hasta ahora. Con cada grupo de 3 bits tenemos 8 posibles combinaciones (números del 0 al 7 en decimal):

Siguiendo esta tabla, vemos que es muy sencillo pasar de la representación con letras a la binaria (si hay letra, 1; si hay guión, 0) y de esta a la decimal. De este modo, si decimos que un archivo tiene permisos 644 estamos diciendo que tiene rw- r– r– (es decir, cualquiera puede leerlo, pero sólo su propietario puede modificarlo).

Y viceversa: cuando queramos modificar los permisos de un fichero, tenemos que pensar qué letras tendremos que activar y obtener su representación decimal. Por ejemplo, si queremos que el propietario pueda leer, escribir y ejecutar, los miembros de su grupo leer y el resto de usuarios no puedan hacer nada, ¿qué números decimales representarán estos permisos?

Deja un comentario