À propos du service Winbindd et IDMapping
Le service Winbind
Winbindd est un daemon qui permet de résoudre les noms dans un environnement UNIX et les noms et les groupes d’un domaine Active Directory. Il implémente le concept d’IDMapping (ou IDMap) pour convertir les SID du monde Windows (eg. S-1-5-21-4262773471-1330489575-488031063-2616) en un UID ou un GID du monde Unix, et inversement.
D’autres outils de mapping entre les SID et les UID existent, comme par exemple le service SSSD. En fonction des cas d’usage, il sera préférable d’utiliser l’un ou l’autre. Par exemple nous préconisons d’utiliser Winbind sur des serveurs de fichiers, et SSSD sur des postes clients.
Le concept de SID
Dans l’environnement Windows, chaque utilisateur, chaque machine et chaque groupe est identifié avec un identifiant unique, le SID. Le SID peut être un SID court (par exemple S-1-0, S-1-5-32-544), qui correspondra à un well-known-SID, soit un SID long (S-1-5-21-4262773471- 1330489575-488031063-2616).
Le groupe Administrators qui est local à une machine (ne pas confondre avec le groupe Domain Admins qui est global au domain), est référencé avec un SID court : S-1-5-32-544.
Un SID long peut faire référence à un utilisateur du domaine, mais également à un utilisateur local créé sur la machine. Dans ce deuxième cas, le domaine d’authentification se résume à la machine elle même. Un SID long se présente en deux parties, la première est la même pour tous les utilisateurs du domaine, et le dernier groupe de chiffres, appelé le RID est unique pour chacun des utilisateurs.
Par exemple, dans le SID S-1-5-21-4262773471-1330489575-488031063-2616, le SID domaine est S-1-5-21-4262773471-1330489575-488031063 et il sera le même pour tous les utilisateurs, machines et groupes du domaine, et le RID est -2616, et il sera unique pour chaque utilisateur, chaque machine et chaque groupe du domaine.
Il existe une liste de Well-Known-RID qui seront les mêmes sur l’ensemble des domaines. Il y a plusieurs dizaines de Well-Known-RID, les principaux à retenir sont les suivants :
-500 : Administator ;
-512 : Domain Admins ;
-513 : Domain Users ;
-515 : Domain Computers ;
Note
Pour information, un SID court, en plus de faire référence à un utilisateur ou à un groupe, peut faire référence à un concept. Par exemple le SID S-1-16-12288 est en fait un token de sécurité qui donne un niveau d’exécution élevé au process courant (cf. UAC).
Vous trouverez une liste des SID existants (SID courts et SID long) en visitant ce lien.
Le concept d’IDMap
IDMap sert à faire la correspondance entre un ID Windows (SID) et un ID Linux (UID/GID). Il est nécessaire de définir un mode de correspondance vu que les deux environnements n’ont pas la même manière de faire référence aux utilisateurs, aux groupes et aux machines. Le concept de SID des environnements Windows est beaucoup plus large que celui des UID de l’environnement Unix, et permet notamment de définir si un utilisateur est local ou distant, s’il fait partie d’un domaine ou d’un autre. L’environnement Unix ne donne qu’un entier pour cela.
Il existe plusieurs programmes pour gérer l’IDMap. Le service proposé par défaut par Samba est Winbind. Celui proposé par RedHat est SSSD. Ces deux solutions ont chacune leurs avantages et leurs inconvénients. Chez Tranquil IT, nous utilisons communément Winbind sur les serveurs de fichiers, alors que nous utilisons SSSD sur les postes de travail Linux.
Il existe trois grandes manières de faire une table de correspondance entre les deux mondes, plus une quatrième :
TDB ;
RFC2307 ;
RID ;
RID avec décalage auto-généré (mode SSSD) ;
Le concept de xidnumber
Dans les environnements Windows, il est possible d’avoir un groupe qui soit propriétaire d’un fichier ou d’un répertoire. Toutefois dans l’environnement Unix, le propriétaire d’un fichier est toujours un utilisateur.
Dans le cas du répertoire SYSVOL
qui contient les GPO sur un serveur Active Directory, il y a certains répertoires de GPO qui appartiennent au groupe Domain Admins. Les clients GPO Microsoft sont très stricts sur les droits du répertoire SYSVOL
, et si les droits ne sont pas conformes, les GPO ne seront pas appliquées.
Pour résoudre ce problème, Samba a développé le concept de xidNumber (par extension de uidNumber et gidNumber). Un xidnumber peut être utilisé indifféremment pour un droit de groupe ou un droit utilisateurs (propriétaires).
Le mapping RFC2307 ne peut pas supporter correctement le fonctionnement xidNumber car il ne garantit pas qu’un utilisateur et qu’un groupe n’auront pas le même ID. De plus le mode RID n’est pas supporté actuellement sur les contrôleurs de domaine. C’est pourquoi dans nos documentations nous recommandons d’utiliser le mapping TDB sur les contrôleurs de domaine Samba.