En quoi le système de privilèges de fichiers Unix diffère-t-il de celui de Windows?

9

Question connexe: En quoi le système de fichiers / l'organisation Linux diffère-t-il de Windows?

Je connais un peu le fonctionnement des privilèges en ce qui concerne les fichiers et les répertoires - chaque entrée a une propriété owneret groupqui représente le propriétaire du fichier et le groupe auquel le propriétaire appartient (corrigez-moi si je me trompe).

En quoi cela diffère-t-il de l'organisation des autorisations dans le système de fichiers NTFS sous Windows? Quels sont les avantages du système d'autorisation d'Unix par rapport à NTFS?

Nathan Osman
la source

Réponses:

16

NTFS possède des ACE Windows. Unix utilise des "bits de mode" sur chaque fichier.

Sur NTFS, chaque fichier peut avoir un propriétaire et zéro ou plusieurs entrées de contrôle d'accès Windows (ACE). Un ACE se compose d'un principal (les utilisateurs et les groupes sont des principaux), un ensemble d'opérations (lecture, écriture, exécution, etc.) et si ces opérations sont autorisées ou refusées. Les fichiers peuvent avoir de nombreux ACE. D'autres objets dans Windows autres que les fichiers peuvent également avoir des ACE, tels que des entrées de registre, des objets d'imprimante et d'autres choses. Tous les ACE sont pris en compte lorsqu'une opération de fichier se produit. Refuser a priorité sur autoriser.

Les ACE Windows prennent en charge l'héritage où vous pouvez définir un ACE pour un répertoire et le faire se propager automatiquement aux répertoires de niveau inférieur.

Les fichiers sous Unix ont un utilisateur propriétaire (propriétaire) et un groupe propriétaire (propriétaire-groupe). Il existe trois «principaux» fixes qui sont le propriétaire, les membres du groupe propriétaire et tout le monde (aka monde). Pour chaque principal, il y a trois "bits" qui couvrent les capacités de lecture, d'écriture et d'exécution. (ceux-ci ont des significations différentes pour les répertoires que pour les fichiers, voir ceci ). Ces bits déterminent qui peut effectuer quelles opérations. C'est ce qu'on appelle le mode du fichier et est intégré au fichier (il n'y a pas d'ACE séparés).

La plupart du temps, vous êtes concerné par les autorisations "monde", c'est-à-dire que la mise à 0 des trois bits pour "monde" signifie que personne qui n'est pas le propriétaire ou le propriétaire du groupe ne peut rien faire avec le fichier. Les autorisations Unix ne fonctionnent que sur le système de fichiers, mais comme la plupart des objets apparaissent sous forme de fichiers, vous pouvez utiliser des autorisations pour restreindre l'accès aux disques, imprimantes, etc. Les autorisations Unix sont plus simples mais plus "grossières". Les autorisations Unix ne prennent pas en charge l'héritage et n'affecteront pas les répertoires de niveau inférieur, à l'exception de l'autorisation d'exécution pour les répertoires (je pense), ce qui oblige les fichiers nouvellement créés à assumer les autorisations du répertoire (mais n'affecte pas les fichiers actuellement créés).

Traditionnellement, les fichiers Unix ont un seul propriétaire et un seul groupe de propriétaires. Il existe des extensions de Linux qui ajoutent des ACE aux fichiers de la même manière que Windows.

L'avantage d'Unix est seulement qu'un système plus simple est généralement plus facile à comprendre et à sécuriser, et plus rapide, car le système de fichiers n'a pas à extraire les ACE en plus des inodes lors de l'ouverture des fichiers.

LawrenceC
la source
4
C'est l' autorisation setgid pour les répertoires, et cela fait que les fichiers héritent du groupe propriétaire, pas les autorisations.
Random832
3
@George: Une chose dont vous devez vous souvenir est que le groupe n'est PAS le groupe du propriétaire, il est séparé. Voir chgrp (1).
Hello71
@ Random832: Merci pour la clarification.
LawrenceC
3
De nos jours, la plupart des distributions incluent la prise en charge des listes de contrôle d'accès étendues (ACL) compilées par défaut dans les différents systèmes de fichiers disponibles. Le nom du progiciel nécessaire pour y accéder et les modifier est généralement appelé aclou faclquelque chose de similaire, avec les deux programmes nommés setfaclet getfaclpour modifier ou récupérer les paramètres de la liste de contrôle d'accès.
Shadur
7

Une chose tout à fait différente est que "exécutable" est une autorisation sous Linux / Unix, non basée sur le nom ou l'extension du fichier.

C'est un avantage par rapport à Windows, car sous Linux, vous pouvez vous assurer que quelque chose ne sera pas exécuté en supprimant les autorisations exécutables. Aucune extension magique n'a d'importance. C'est probablement une des raisons pour lesquelles les virus de fichiers traditionnels ne sont arrivés nulle part sous Unix et Linux.

Bruce Ediger
la source
2
Windows a en fait une autorisation exécutable, bien qu'il défaite l'objectif en le définissant par défaut.
Patchs
1
Les extensions n'ont pas d'importance sur les fenêtres non plus.
Logan Capaldo
1
@Logan: En fait, ils ont une signification sur Windows. L'extension de fichier détermine quel (s) programme (s) peut-on utiliser pour l'ouvrir et indique à l'explorateur de quel type de fichier il s'agit afin de pouvoir générer des miniatures. Dans ce dernier cas, cela pourrait potentiellement exploiter un bogue qui existe dans le générateur de vignettes et pourrait donc compromettre un système.
Nathan Osman
1
@George La même chose s'applique à un gestionnaire de fichiers graphique avec un aperçu d'ongle de pouce buggy sur n'importe quel système d'exploitation. Mon point était que CreateProcess ne donne pas deux huées si votre programme se termine par .exe (et c'est facile à voir en exécutant un programme à partir de cmd.exe), mais il se soucie en effet du bit d'exécution.
Logan Capaldo
2
@George, juste comme Unix (sauf si vous voulez commencer à vous demander si la recherche d'un shebang est "avancée" ou non). Je voulais juste préciser que l'extension de fichier n'a rien à voir avec le modèle de sécurité. Si vous marquez un exécutable non exécutable sur Windows, il a le même effet que sur unix.
Logan Capaldo