GNU/Linux >> Tutoriels Linux >  >> Linux

Pourquoi les fichiers ne peuvent-ils pas être manipulés par inode ?

Raisons de sécurité - pour accéder à un fichier, vous avez besoin d'une autorisation sur le fichier AINSI QUE d'une autorisation pour rechercher tous les répertoires à partir de la racine nécessaires pour accéder au fichier. Si vous pouviez accéder à un fichier par inode, vous pourriez contourner les vérifications sur les répertoires contenant.

Cela vous permet de créer un fichier accessible à un ensemble d'utilisateurs (ou à un ensemble de groupes) et à personne d'autre -- créez des répertoires qui ne sont accessibles que par les utilisateurs (un répertoire par utilisateur), puis dur- lier le fichier à tous ces répertoires :le fichier lui-même est accessible à tous, mais ne peut être consulté que par une personne disposant d'autorisations de recherche sur l'un des répertoires auxquels il est lié.


Certains systèmes d'exploitation le font avoir cette facilité. Par exemple, OS X en a besoin pour prendre en charge le Carbon File Manager, et sous Linux, vous pouvez utiliser debugfs . Bien sûr, vous pouvez le faire sur n'importe quel UNIX à partir de la ligne de commande via find -inum , mais la vraie raison pour laquelle vous ne pouvez pas accéder aux fichiers par inode est que ce n'est pas particulièrement utile. Ça fait en quelque sorte contourner les autorisations de fichiers, car s'il existe un fichier que vous pouvez lire dans un dossier que vous ne pouvez ni lire ni exécuter, l'ouverture de l'inode vous permet de le découvrir.

La raison pour laquelle ce n'est pas très utile est que vous devez trouver un numéro d'inode via un *stat() appel, à quel point vous avez déjà le nom du fichier (ou un fd ouvert)... ou vous devez deviner l'inum.


En réponse à votre commentaire :pour "passer un fichier", vous pouvez utiliser fd passant sur les sockets AF_LOCAL au moyen de SCM_RIGHTS (voir man 7 unix ).


Linux
  1. Un moyen facile de masquer des fichiers et des répertoires sous Linux

  2. Comment trouver un fichier sous Linux dans tous les répertoires de manière récursive

  3. Supprimer tous les fichiers/répertoires sauf un fichier ?

  4. Les fichiers écrasés peuvent-ils être récupérés ?

  5. Déplacer des fichiers en lisant leurs noms de fichiers vers différents répertoires ?

Commande Ls sous Linux (liste des fichiers et des répertoires)

Comment copier des fichiers et des répertoires sous Linux

Comment déplacer des fichiers et des répertoires sous Linux (commande mv)

Comment copier des fichiers et des répertoires dans un terminal Linux

Commande Stat :Afficher les attributs des fichiers et des répertoires

Pourquoi ne puis-je pas supprimer ce fichier en tant que root ?