¿En qué se diferencia el sistema de privilegios de archivos Unix del de Windows?

9

Pregunta relacionada: ¿En qué se diferencia el sistema de archivos / organización de Linux de Windows?

Estoy un poco familiarizado con cómo funcionan los privilegios cuando se trata de archivos y directorios - cada entrada tiene una ownery la grouppropiedad que representan el propietario del archivo y el grupo que el propietario pertenece a (corríjanme si me equivoco).

¿Cómo difiere esto de la organización de permisos en el sistema de archivos NTFS en Windows? ¿Qué ventajas tiene el sistema de permisos de Unix sobre NTFS?

Nathan Osman
fuente

Respuestas:

16

NTFS tiene Windows ACE. Unix usa "bits de modo" en cada archivo.

En NTFS, cada archivo puede tener un propietario y cero o más entradas de control de acceso (ACE) de Windows. Un ACE consta de un principal (los usuarios y los grupos son principales), un conjunto de operaciones (lectura, escritura, ejecución, etc.) y si esas operaciones están permitidas o denegadas. Los archivos pueden tener muchas ACE. Otros objetos en Windows que no sean archivos también pueden tener ACE, como entradas de registro, objetos de impresora y otras cosas. Todas las ACE se tienen en cuenta cuando se produce una operación de archivo. Negar tiene prioridad sobre permitir.

Las ACE de Windows admiten herencia donde puede establecer una ACE para un directorio y hacer que se propague automáticamente a directorios de nivel inferior.

Los archivos en Unix tienen un usuario propietario (propietario) y un grupo propietario (propietario-grupo). Hay tres "principales" fijos que son propietarios, miembros del grupo propietario y todos los demás (también conocido como mundo). Para cada director hay tres "bits" que cubren las habilidades de lectura, escritura y ejecución. (estos tienen diferentes significados para los directorios que los archivos, vea esto ). Estos bits determinan quién puede realizar qué operaciones. Esto se denomina modo del archivo y está integrado en el archivo (no hay ACE independientes).

La mayoría de las veces le preocupan los permisos "mundiales", es decir, establecer los tres bits en 0 para "mundo" significa que nadie que no sea el propietario o el propietario del grupo puede hacer nada con el archivo. Los permisos de Unix solo funcionan en el sistema de archivos, pero dado que la mayoría de los objetos aparecen como archivos, puede usar permisos para restringir el acceso a discos, impresoras, etc. Los permisos de Unix son más simples pero más "gruesos". Los permisos de Unix no admiten la herencia y no afectarán a los directorios de nivel inferior, con la excepción del permiso de ejecución para directorios (creo) que hace que los archivos recién creados asuman permisos del directorio (pero no afecta a los archivos creados actualmente).

Tradicionalmente, los archivos Unix tienen un único propietario y un único grupo de propietarios. Hay extensiones de Linux que agregan ACE a los archivos de manera similar a Windows.

La ventaja de Unix es solo que un sistema más simple suele ser más fácil de entender y seguro, y la velocidad ya que el sistema de archivos no tiene que buscar ACE además de inodos al abrir archivos.

LawrenceC
fuente
44
Ese es el permiso setgid para directorios, y hace que los archivos hereden el grupo propietario, no los permisos.
Random832
3
@George: Una cosa que debes recordar es que ese grupo NO es el grupo del propietario, está separado. Ver chgrp (1).
Hola71
@ Random832: Gracias por la aclaración.
LawrenceC
3
Actualmente, la mayoría de las distribuciones incluyen soporte para listas de control de acceso extendidas (ACL) compiladas en los diversos sistemas de archivos disponibles de forma predeterminada. El nombre del paquete de software necesario para acceder y modificar estos generalmente se llama aclo faclo algo similar, con los dos programas mencionados setfacly getfaclpara modificar o recuperar configuración de la lista de control de acceso.
Shadur
7

Una cosa que es bastante diferente es que "ejecutable" es un permiso bajo Linux / Unix, no basado en el nombre o la extensión del archivo.

Esta es una ventaja sobre Windows, ya que en Linux puede asegurarse de que algo no se ejecute eliminando los permisos ejecutables. Ninguna extensión mágica importa en absoluto. Esta es probablemente una de las razones por las cuales los virus de archivos tradicionales no llegaron exactamente a ninguna parte en Unix y Linux.

Bruce Ediger
fuente
2
Windows realmente tiene un permiso ejecutable, aunque anulan el propósito al configurarlo de manera predeterminada.
Parches
1
Las extensiones tampoco importan en Windows.
Logan Capaldo
1
@Logan: En realidad, tienen importancia en Windows. La extensión de archivo determina qué programa (s) se pueden usar para abrirlo e indica al explorador qué tipo de archivo es para que se puedan generar miniaturas. En el último caso, eso podría explotar un error que existe en el generador de miniaturas y, por lo tanto, podría comprometer un sistema.
Nathan Osman
1
@George Lo mismo se aplica a un administrador de archivos gráfico con una vista previa con errores de uñas en cualquier sistema operativo. Mi punto era que CreateProcess no da dos puntos si su programa termina en .exe (y esto es fácil de ver ejecutando un programa desde cmd.exe), pero de hecho le importa el bit de ejecución.
Logan Capaldo
2
@George, justo como Unix (a menos que quieras comenzar a discutir si buscar un shebang es "avanzado" o no). Solo quería dejar en claro que la extensión del archivo no tiene nada que ver con el modelo de seguridad. Si marca un ejecutable no ejecutable en Windows, tiene el mismo efecto que tiene en un Unix.
Logan Capaldo