Permisos (Linux)

De Kyngopedia
Saltar a: navegación, buscar

Cada sistema operativo tiene su propia manera de gestionar los permisos, y el de Linux es bastante peculiar, a la vez que completo. Es más simple que el sistema de Windows, y eso puede hacerlo algo más complejo de configurar en según qué situaciones.

Cadena de permisos

Los permisos se definen en una cadena de 9 bytes, en tres grupos de tres bytes: para usuario, para el grupo propietario, y para los demás.

- | rwx | rwx | rwx

El primer byte no cuenta como "permiso", más bien como indicador del tipo de contenido:

  • - : Fichero regular
  • d : Directorio
  • l : Enlace simbólico
  • c : Enlace a dispositivo de carácter
  • p : Tubería
  • s : Socket
  • b : Archivo de bloque

El primer trío de bytes pertenece a los permisos del USUARIO definido como propietario de ese fichero. El segundo trío de bytes pertenece a los permisos del GRUPO definido como propietario de ese fichero. El usuario no tiene por qué ser miembro de dicho grupo. El tercer trío de bytes pertenece a los permisos del RESTO DE USUARIOS del sistema.

También se pueden poner con números decimales, y deben calcularse usando una base binaria.

000 - 000 - 000
rwx - rwx - rwx

Si queremos tener solamente permisos de escritura para todos, deberíamos ponerlo así:

100 - 100 - 100
rwx - rwx - rwx

Traducido al decimal, sería 444. Podemos hacer las secuencias que queramos para dar o quitar permisos, el número más alto que se podrá obtener en cada trío de bits es 7 (111 - 111 - 111 = 777).

Tabla en binario de permisos

Binario | Decimal | Efecto                 | Permiso con sentido
--------|----------------------------------|--------------------------------------------------------
000     |    0    | Nada                   | Sí (muy específico)
001     |    1    | Ejecución              | No (no puedes ejecutar lo que no puedes leer)
010     |    2    | Escritura              | No (no puedes escribir lo que no puedes leer)
011     |    3    | Escritura y ejecución  | No (los dos anteriores)
100     |    4    | Lectura                | Sí
101     |    5    | Lectura y ejecución    | Sí
110     |    6    | Lectura y escritura    | Sí
111     |    7    | Todo                   | Sí (aunque poco seguro si se aplica de manera indebida)

Los permisos SetUID, SetGID y Sticky Bit, deben aplicarse con el comando chmod de otra manera: (u,g)+s ó +t, ya que no funcionan con el sistema binario convencional.

Tipos de permiso

  • R - Read: Permiso de lectura sobre el fichero o directorio
  • W - Write: Permiso de escritura sobre el fichero o directorio
  • X - Execute: Permiso de ejecución de un fichero, o de acceso a un directorio
  • S (usuario) - SetUID: Permite ejecutar el fichero como otro usuario sin pedir elevación de permisos
  • S (grupo) - SetGID: Permite ejecutar el fichero como miembro de otro grupo
  • T - Sticky Bit: Este permiso permite acceso a un directorio para todos los usuarios, además de proteger los archivos de los demás

Comandos

  • chmod: Cambia permisos del fichero - chmod <permisos> <fichero o directorio>
  • chown: Cambia el usuario o grupo propietarios del fichero - chown <usuario>.<grupo> <fichero o directorio>