Los 9 Bits Configurables de Permisos en Unix



Introducción:
Los sistemas Unix y Unix-like, como Linux, utilizan un sistema de permisos basado en 9 bits configurables para controlar quién puede acceder, modificar o ejecutar archivos. En este post, exploraremos en detalle estos 9 bits de permisos y aprenderemos cómo asignar y borrar permisos utilizando el comando chmod.

Los 9 Bits Configurables de Permisos:

Cada archivo en un sistema Unix tiene 9 bits de permisos, divididos en tres grupos de 3 bits cada uno. Estos grupos representan los permisos para:

  1. Propietario (User): El usuario que creó el archivo.
  2. Grupo (Group): El grupo al que pertenece el archivo.
  3. Otros (Others): Todos los demás usuarios del sistema.

Cada bit puede estar en uno de los siguientes estados:

  • r (lectura): Permite ver el contenido del archivo.
  • w (escritura): Permite modificar o eliminar el archivo.
  • x (ejecución): Permite ejecutar el archivo si es un programa ejecutable.

Asignación de Permisos con chmod:

Para asignar permisos a un archivo, utilizamos el comando chmod, seguido de una notación numérica de permisos. Cada número corresponde a un grupo de usuarios: propietario, grupo y otros. Los números representan la suma de los permisos que deseas otorgar, donde:

  • r (lectura) = 4
  • w (escritura) = 2
  • x (ejecución) = 1

Ejemplos de asignación de permisos:

  • Para otorgar permisos de lectura y escritura al propietario:
  chmod 600 archivo
  • Para dar permisos de lectura y ejecución al propietario y al grupo:
  chmod 750 archivo

Borrado de Permisos con chmod:

También puedes utilizar chmod para borrar permisos de un archivo. Para hacerlo, utiliza un signo «-» seguido de los permisos que deseas eliminar. Ejemplos de borrado de permisos:

  • Para quitar el permiso de escritura para el grupo:
  chmod g-w archivo
  • Para eliminar todos los permisos de ejecución para otros usuarios:
  chmod o-x archivo

La representación binaria

La representación binaria de los permisos en sistemas Unix utiliza una notación de 3 bits para cada uno de los tres grupos de usuarios: propietario, grupo y otros. Cada bit en esta notación representa un permiso específico: lectura (r), escritura (w) y ejecución (x). A continuación, te proporciono la forma binaria de estos permisos:

  • r (lectura): Representado por el bit 4 en la notación numérica de permisos y en la forma binaria como 100.
  • w (escritura): Representado por el bit 2 en la notación numérica de permisos y en la forma binaria como 010.
  • x (ejecución): Representado por el bit 1 en la notación numérica de permisos y en la forma binaria como 001.

Para representar los permisos de un grupo de usuarios (propietario, grupo u otros), se combinan estos bits según los permisos deseados. Aquí tienes algunos ejemplos:

  • Permiso completo (lectura, escritura y ejecución): rwx se representa en binario como 111.
  • Solo lectura: r-- se representa en binario como 100.
  • Solo escritura: -w- se representa en binario como 010.
  • Solo ejecución: --x se representa en binario como 001.
  • Lectura y escritura: rw- se representa en binario como 110.
  • Lectura y ejecución: r-x se representa en binario como 101.
  • Escritura y ejecución: -wx se representa en binario como 011.
  • Sin permisos (ninguno de los bits establecidos): --- se representa en binario como 000.

Para cada uno de los tres grupos de usuarios (propietario, grupo y otros), se utiliza una secuencia de 3 bits para representar los permisos. Por ejemplo, si tienes permisos rwx para el propietario, rw- para el grupo y r-- para otros, la representación binaria completa sería 111110100 en binario, que se traduce a 754 en notación numérica de permisos.

Esta notación binaria es una forma útil de entender cómo se almacenan internamente los permisos en sistemas Unix, pero en la práctica, los permisos se suelen representar en notación numérica de permisos o en notación simbólica más legible para los usuarios.

Varios ejemplos de cómo calcular los bits de permisos en notación numérica utilizando la asignación de valores numéricos para los permisos:

Ejemplo 1: Dar permisos de lectura y escritura al propietario y permisos de ejecución al grupo y otros.

  • Permiso de lectura (r) tiene un valor de 4.
  • Permiso de escritura (w) tiene un valor de 2.
  • Permiso de ejecución (x) tiene un valor de 1.

Calculamos los valores numéricos para cada grupo:

  • Propietario: 4 (lectura) + 2 (escritura) = 6
  • Grupo: 1 (ejecución)
  • Otros: 1 (ejecución)

Combinamos los valores calculados en un número de tres dígitos:

  • Propietario: 6
  • Grupo: 1
  • Otros: 1

El número de permisos en notación numérica sería 611. Por lo tanto, 611 representa un archivo con permisos de lectura y escritura para el propietario y permiso de ejecución para el grupo y otros.

Ejemplo 2: Otorgar permiso de lectura a todos los usuarios, pero solo permitir la ejecución para el propietario.

  • Permiso de lectura (r) tiene un valor de 4.
  • Permiso de escritura (w) tiene un valor de 2.
  • Permiso de ejecución (x) tiene un valor de 1.

Calculamos los valores numéricos para cada grupo:

  • Propietario: 4 (lectura) + 1 (ejecución) = 5
  • Grupo: 4 (lectura)
  • Otros: 4 (lectura)

Combinamos los valores calculados en un número de tres dígitos:

  • Propietario: 5
  • Grupo: 4
  • Otros: 4

El número de permisos en notación numérica sería 544. Por lo tanto, 544 representa un archivo con permiso de lectura para todos los usuarios, pero solo permiso de ejecución para el propietario.

Ejemplo 3: Dar permiso completo (lectura, escritura y ejecución) al propietario, pero solo permiso de lectura para el grupo y otros.

  • Permiso de lectura (r) tiene un valor de 4.
  • Permiso de escritura (w) tiene un valor de 2.
  • Permiso de ejecución (x) tiene un valor de 1.

Calculamos los valores numéricos para cada grupo:

  • Propietario: 4 (lectura) + 2 (escritura) + 1 (ejecución) = 7
  • Grupo: 4 (lectura)
  • Otros: 4 (lectura)

Combinamos los valores calculados en un número de tres dígitos:

  • Propietario: 7
  • Grupo: 4
  • Otros: 4

El número de permisos en notación numérica sería 744. Por lo tanto, 744 representa un archivo con permiso completo para el propietario y permiso de lectura para el grupo y otros.

Estos ejemplos ilustran cómo calcular los bits de permisos en notación numérica para diferentes configuraciones de permisos en sistemas Unix. Puedes utilizar esta técnica para asignar permisos precisos a tus archivos según tus necesidades.

Conclusión:
Los 9 bits configurables de permisos en sistemas Unix son una parte esencial de la administración de archivos y la seguridad del sistema. Con chmod, puedes asignar o borrar permisos de manera precisa para satisfacer las necesidades de acceso y privacidad de tus archivos. Esperamos que estos ejemplos te ayuden a comprender mejor cómo funcionan los permisos en Unix y cómo utilizar el comando chmod de manera efectiva.