système de files uid et gid dans linux

Je suis tombé sur un tutoriel du kernel linux et là, ils ont parlé de 4 paires d'identificateurs et l'un d'eux était le système de files uid et gid.

Quelqu'un pourrait-il m'expliquer ce que c'est et comment il est différent de uid et gid ?

Qui a pensé que cette question entraînerait une telle collection de réponses sous-informées trop confiantes!

Le système de files uid ou fsuid est une fonctionnalité Linux conçue pour faciliter l'implémentation du server NFS. Il s'agit d'un uid supplémentaire (non-POSIX) utilisé uniquement pour les controls d'autorisation de files. Pour tout process qui n'appelle pas setfsuid (essentiellement n'importe quel process qui ne tente pas d'être un server NFS), le fsuid est le même que le uid effectif.

Il y a même une page de man , donc excuse pour prétendre qu'il n'existe pas.

Mise à jour : j'ai été inspiré pour aller chercher l'origine de fsuid. Quand il a été ajouté dans Linux 1.1.44, ce commentaire a été mis au dessus de la nouvelle fonction sys_setfsuid :

 +/* + * "setfsuid()" sets the fsuid - the uid used for filesystem checks. This + * is used for "access()" and for the NFS deamon (letting nfsd stay at + * whatever uid it wants to). It normally shadows "euid", except when + * explicitly set by setfsuid() or for access.. + */ 

et ce changement a été fait dans le commentaire ci-dessus sys_access :

 - * XXX we should use the real ids for checking _all_ components of the - * path. Now we only use them for the final component of the path. + * access() needs to use the real uid/gid, not the effective uid/gid. + * We do this by temporarily setting fsuid/fsgid to the wanted values 

Donc NFS était l'un des deux objectives initiaux. L'autre faisait fonctionner access () correctement. access () est utilisé par les programmes setuid pour déterminer si l'user réel aurait access à un file sans les privilèges supplémentaires du setuid. Avant le 1.1.44, il était bogué. Depuis lors, il utilise un changement temporaire de fsuid pour faire le travail. Depuis que le fsuid est restauré avant que l'appel système access () returnne, vous ne verrez jamais la modification de l'espace user.