Permisos del sistema de archivos

Acciones permitidas en sistemas de archivos

La mayoría de los sistemas de archivos incluyen atributos de archivos y directorios que controlan la capacidad de los usuarios para leer, modificar, navegar y ejecutar el contenido del sistema de archivos. En algunos casos, las opciones o funciones del menú pueden hacerse visibles u ocultas según el nivel de permiso del usuario; este tipo de interfaz de usuario se conoce como controlada por permisos .

Hay dos tipos de permisos ampliamente disponibles: los permisos del sistema de archivos POSIX y las listas de control de acceso (ACL), que son capaces de realizar un control más específico.

Variaciones del sistema de archivos

El sistema de archivos de la tabla de asignación de archivos original tiene un atributo de solo lectura para todos los usuarios por archivo.

NTFS implementado en Microsoft Windows NT y sus derivados, utiliza ACL [1] para proporcionar un conjunto complejo de permisos.

OpenVMS utiliza un esquema de permisos similar al de Unix. Hay cuatro categorías (sistema, propietario, grupo y mundo) y cuatro tipos de permisos de acceso (lectura, escritura, ejecución y eliminación). Las categorías no están separadas entre sí: Mundo incluye Grupo, que a su vez incluye Propietario. La categoría Sistema incluye de forma independiente a los usuarios del sistema. [2]

HFS y su sucesor HFS+ , tal como se implementaron en los sistemas operativos Mac OS clásicos , no admiten permisos.

macOS utiliza permisos compatibles con POSIX y los admite tanto en HFS+ como en APFS . A partir de la versión 10.4 ("Tiger"), también admite el uso de ACL de NFSv4 además de permisos compatibles con POSIX. El Manual de administración de servicios de archivos de Apple Mac OS X Server versión 10.4+ recomienda utilizar solo permisos tradicionales de Unix si es posible. macOS también sigue siendo compatible con el atributo "Protegido" del Mac OS clásico.

La compatibilidad de ACL de Solaris depende del sistema de archivos que se utilice; el sistema de archivos UFS más antiguo admite ACL POSIX.1e, mientras que ZFS solo admite ACL NFSv4. [3]

Linux admite ext2 , ext3 , ext4 , Btrfs y otros sistemas de archivos, muchos de los cuales incluyen listas de control de acceso (ACL) POSIX.1e. Existe compatibilidad experimental con listas de control de acceso (ACL) NFSv4 para sistemas de archivos ext3 [4] y ext4.

FreeBSD admite ACL POSIX.1e en UFS y ACL NFSv4 en UFS y ZFS. [5] [6]

IBM z/OS implementa la seguridad de archivos utilizando RACF (Resource Access Control Facility) [7] [ enlace muerto permanente ]

El sistema de archivos de AmigaOS, AmigaDOS, admite un sistema de permisos relativamente avanzado para un sistema operativo de un solo usuario. En AmigaOS 1.x, los archivos tenían permisos/indicadores de archivado, lectura, escritura, ejecución y eliminación (conocidos colectivamente como ARWED). En AmigaOS 2.x y versiones posteriores, se agregaron permisos/indicadores adicionales de retención, secuencias de comandos y puros.

El sistema operativo OpenHarmony junto con su ecosistema del lado del cliente en Oniro OS y HarmonyOS con versiones HarmonyOS NEXT y también el sistema operativo de servidor openEuler basado en Linux utiliza de forma nativa su Harmony Distributed File System (HMDFS) que admite el administrador de token de acceso ( control de acceso basado en roles ) y la capacidad de API Core File Kit con administración de permisos granulares con excepción de openEuler. [8] [ verificación fallida ]

Permisos POSIX

Los permisos en sistemas de archivos tipo Unix están definidos en el estándar POSIX.1-2017 [9] , que utiliza tres ámbitos o clases conocidos como propietario , grupo y otros . Cuando se crea un archivo, sus permisos están restringidos por la máscara de usuario del proceso que lo creó.

Clases

Los archivos y directorios son propiedad de un usuario. El propietario determina la clase de usuario del archivo . Se aplican distintos permisos al propietario.

A los archivos y directorios se les asigna un grupo , que define la clase de grupo del archivo. Se aplican distintos permisos a los miembros del grupo del archivo. El propietario puede ser miembro del grupo del archivo.

Los usuarios que no son propietarios ni miembros del grupo forman parte de la clase "otros" de un archivo . A los demás se les aplican permisos distintos.

Los permisos efectivos se determinan en función de la primera clase a la que pertenece el usuario en el orden de usuario, grupo y otros. Por ejemplo, el usuario que es el propietario del archivo tendrá los permisos asignados a la clase de usuario independientemente de los permisos asignados a la clase de grupo o a la clase otros.

Permisos

Los sistemas tipo Unix implementan tres permisos específicos que se aplican a cada clase:

  • El permiso de lectura otorga la capacidad de leer un archivo. Cuando se configura para un directorio, este permiso otorga la capacidad de leer los nombres de los archivos en el directorio, pero no de obtener más información sobre ellos, como contenido, tipo de archivo, tamaño, propietario o permisos.
  • El permiso de escritura otorga la capacidad de modificar un archivo. Cuando se configura para un directorio, este permiso otorga la capacidad de modificar entradas en el directorio, lo que incluye crear archivos, eliminar archivos y cambiar el nombre de los archivos. Esto requiere que también se configure la ejecución ; sin ella, el permiso de escritura no tiene sentido para los directorios.
  • El permiso de ejecución otorga la capacidad de ejecutar un archivo. Este permiso debe configurarse para programas ejecutables, a fin de permitir que el sistema operativo los ejecute. Cuando se configura para un directorio, el permiso de ejecución se interpreta como el permiso de búsqueda : otorga la capacidad de acceder al contenido del archivo y a la metainformación si se conoce su nombre, pero no permite enumerar los archivos dentro del directorio, a menos que también se configure la lectura .

El efecto de establecer los permisos en un directorio, en lugar de en un archivo, es "uno de los problemas de permisos de archivos que más frecuentemente se malinterpretan". [10]

Cuando no se establece un permiso, se deniegan los derechos correspondientes. A diferencia de los sistemas basados ​​en ACL, los permisos en sistemas tipo Unix no se heredan. Los archivos creados dentro de un directorio no necesariamente tienen los mismos permisos que ese directorio.

Cambiar el comportamiento de los permisos con setuid, setgid y bits fijos

Los sistemas tipo Unix suelen emplear tres modos adicionales. En realidad, son atributos, pero se los denomina permisos o modos. Estos modos especiales se aplican a un archivo o directorio en general, no a una clase, aunque en la notación simbólica (ver más abajo) el bit setuid se establece en la tríada para el usuario, el bit setgid se establece en la tríada para el grupo y el bit sticky se establece en la tríada para los demás.

  • El ID de usuario establecido , setuid o modo SUID. Cuando se ejecuta un archivo con setuid, el proceso resultante asumirá el ID de usuario efectivo proporcionado a la clase propietaria. Esto permite que los usuarios sean tratados temporalmente como root (u otro usuario).
  • El ID de grupo establecido , setgid o el permiso SGID. Cuando se ejecuta un archivo con setgid , el proceso resultante asumirá el ID de grupo dado a la clase de grupo. Cuando se aplica setgid a un directorio, los nuevos archivos y directorios creados bajo ese directorio heredarán su grupo de ese directorio. (El comportamiento predeterminado es utilizar el grupo principal del usuario efectivo al establecer el grupo de nuevos archivos y directorios, excepto en sistemas derivados de BSD que se comportan como si el bit setgid estuviera siempre establecido en todos los directorios (consulte Setuid ).)
  • El modo sticky (también conocido como modo de texto ). El comportamiento clásico del bit sticky en los archivos ejecutables ha sido el de alentar al núcleo a retener la imagen del proceso resultante en la memoria más allá de la terminación; sin embargo, tal uso del bit sticky ahora está restringido a solo una minoría de sistemas operativos tipo Unix ( HP-UX y UnixWare ). En un directorio, el permiso sticky impide que los usuarios cambien el nombre, muevan o eliminen archivos contenidos que sean propiedad de otros usuarios que no sean ellos mismos, incluso si tienen permiso de escritura en el directorio. Solo el propietario del directorio y el superusuario están exentos de esto.

Estos modos adicionales también se denominan bit setuid , bit setgid y bit sticky , debido a que cada uno ocupa solo un bit.

Notación de permisos tradicionales de Unix

Notación simbólica

Los permisos de Unix se representan en notación simbólica o en notación octal.

La forma más común, tal como la utiliza el comando ls -l, es la notación simbólica .

Tres tríadas de permiso
primera tríadaLo que puede hacer el propietario
segunda tríadaLo que pueden hacer los miembros del grupo
tercera tríadaQué pueden hacer otros usuarios
Cada tríada
primer caracterr: legible
segundo caracterw:escribible
tercer personajex: ejecutable
so t: setuid / setgid o sticky (también ejecutable)
So T: setuid/setgid o sticky (no ejecutable)

El primer carácter de la lspantalla indica el tipo de archivo y no está relacionado con los permisos. Los nueve caracteres restantes se encuentran en tres conjuntos, cada uno de los cuales representa una clase de permisos como tres caracteres. El primer conjunto representa la clase de usuario . El segundo conjunto representa la clase de grupo . El tercer conjunto representa la clase de otros .

Cada uno de los tres caracteres representa los permisos de lectura, escritura y ejecución:

  • rsi se permite la lectura, -si no.
  • wSi se permite escribir, -si no.
  • xsi se permite la ejecución, -si no.

Los siguientes son algunos ejemplos de notación simbólica:

  • -rwxr-xr-x:un archivo regular cuya clase de usuario tiene permisos completos y cuyo grupo y otras clases solo tienen permisos de lectura y ejecución.
  • crw-rw-r--:un archivo especial de caracteres cuyas clases de usuario y grupo tienen permisos de lectura y escritura y cuyas otras clases solo tienen permiso de lectura.
  • dr-x------: un directorio cuya clase de usuario tiene permisos de lectura y ejecución y cuyo grupo y otras clases no tienen permisos.

En algunos sistemas de permisos, símbolos adicionales en la ls -lpantalla representan características de permisos adicionales:

  • El sufijo + (más) indica una lista de control de acceso que puede controlar permisos adicionales.
  • El sufijo . (punto) indica que hay un contexto SELinuxls -Z . Los detalles se pueden indicar con el comando .
  • El sufijo @ indica que están presentes los atributos de archivo extendidos .

Para representar los atributos setuid , setgid y sticky o text , se modifica el carácter ejecutable ( xo -). Aunque estos atributos afectan al archivo en general, no solo a los usuarios de una clase, el atributo setuid modifica el carácter ejecutable en la tríada para el usuario, el atributo setgid modifica el carácter ejecutable en la tríada para el grupo y el atributo sticky o text modifica el carácter ejecutable en la tríada para los demás. Para los atributos setuid o setgid, en la primera o segunda tríada, el xbecomes sy el -becomes S. Para el atributo sticky o text, en la tercera tríada, el xbecomes ty el -becomes T. A continuación, se incluye un ejemplo:

  • -rwsr-Sr-t: un archivo cuya clase de usuario tiene permisos de lectura, escritura y ejecución; cuya clase de grupo tiene permisos de lectura; cuya clase others tiene permisos de lectura y ejecución; y que tiene los atributos setuid , setgid y sticky establecidos.

Notación numérica

Otro método para representar los permisos de Unix es una notación octal (base 8) como se muestra en stat -c %a. Esta notación consta de al menos tres dígitos. Cada uno de los tres dígitos más a la derecha representa un componente diferente de los permisos: propietario, grupo y otros. (Si hay un cuarto dígito, el dígito más a la izquierda (de orden superior) se refiere a tres atributos adicionales, el bit setuid , el bit setgid y el bit sticky ).

Cada uno de estos dígitos es la suma de los bits que lo componen en el sistema de numeración binario . Como resultado, los bits específicos se suman a la suma, tal como se representa mediante un número:

  • El bit de lectura suma 4 a su total (en binario 100),
  • El bit de escritura suma 2 a su total (en binario 010) y
  • El bit de ejecución agrega 1 a su total (en binario 001).

Estos valores nunca producen combinaciones ambiguas; cada suma representa un conjunto específico de permisos. En términos más técnicos, se trata de una representación octal de un campo de bits : cada bit hace referencia a un permiso independiente, y agrupar 3 bits a la vez en octal corresponde a agrupar estos permisos por usuario, grupo y otros.

Estos son los ejemplos de la sección de notación simbólica dados en notación octal:


Notación simbólica

Notación numérica
Inglés
----------0000Sin permisos
-rwx------0700Leer, escribir y ejecutar solo para el propietario
-rwxrwx---0770Leer, escribir y ejecutar para el propietario y el grupo
-rwxrwxrwx0777Leer, escribir y ejecutar para el propietario, el grupo y otros
---x--x--x0111ejecutar
--w--w--w-0222escribir
--wx-wx-wx0333escribir y ejecutar
-r--r--r--0444leer
-r-xr-xr-x0555leer y ejecutar
-rw-rw-rw-0666leer y escribir
-rwxr-----0740El propietario puede leer, escribir y ejecutar; el grupo solo puede leer; los demás no tienen permisos

Grupo privado de usuarios

Algunos sistemas se apartan del modelo POSIX tradicional de usuarios y grupos creando un nuevo grupo (un "grupo privado de usuarios") para cada usuario. Suponiendo que cada usuario es el único miembro de su grupo privado de usuarios, este esquema permite utilizar una máscara de usuario 002 sin permitir que otros usuarios escriban en archivos recién creados en directorios normales, ya que dichos archivos se asignan al grupo privado del usuario creador. Sin embargo, cuando se desea compartir archivos, el administrador puede crear un grupo que contenga los usuarios deseados, crear un directorio en el que el grupo pueda escribir y asignarlo al nuevo grupo y, lo más importante, hacer que el directorio sea setgid. Hacerlo setgid hará que los archivos creados en él se asignen al mismo grupo que el directorio y la máscara de usuario 002 (habilitada mediante el uso de grupos privados de usuarios) garantizará que otros miembros del grupo puedan escribir en esos archivos. [11] [12]

Véase también

Referencias

  1. ^ "Permisos de archivos y carpetas". Microsoft. 9 de diciembre de 2009.
  2. ^ "Documentación de OpenVMS". Archivado desde el original el 5 de marzo de 2012. Consultado el 6 de junio de 2009 .
  3. ^ "Guía de administración de Oracle Solaris ZFS" (PDF) . Septiembre de 2010.
  4. ^ "Listas de control de acceso (ACL) de NFSv4 nativas en Linux". Archivado desde el original el 12 de octubre de 2008. Consultado el 4 de mayo de 2010 .
  5. ^ "NFSv4_ACL – Wiki de FreeBSD".
  6. ^ "Guía del usuario de FreeNAS 9.1.1" (PDF) . 2013.
  7. ^ "Centro de conocimiento de IBM".
  8. ^ "Guía de desarrollo del sistema de archivos distribuido HarmonyOS". Substack . Blog LivingInHarmony. 13 de marzo de 2024 . Consultado el 13 de marzo de 2024 .
  9. ^ "Definiciones, 3.175 Bits de permisos de archivos". pubs.opengroup.org . 2018-07-22 . Consultado el 2023-06-24 .
  10. ^ Hatch, Bri. "Confusión de permisos de archivos en Linux, parte 2", "Hacking Linux Exposed", 24 de abril de 2003, consultado el 6 de julio de 2011.
  11. ^ Epstein, Brian. "El cómo y el por qué de los grupos privados de usuarios en Unix". security.ias.edu . Instituto de Estudios Avanzados de Seguridad de Redes. Archivado desde el original el 8 de agosto de 2014 . Consultado el 5 de agosto de 2014 .
  12. ^ "Guía del administrador del sistema de Red Hat Enterprise Linux 7, 4.3.4 Creación de directorios de grupo". Portal del cliente de Red Hat . Red Hat.
  • El libro de recetas de Linux: grupos y cómo trabajar en ellos, por Michael Stutz, 2004
Obtenido de "https://es.wikipedia.org/w/index.php?title=Permisos_del_sistema_de_archivos&oldid=1250747743"