1.4. Comprendre et configurer le mappage des identifiants Samba
Les domaines Windows distinguent les utilisateurs et les groupes par des identifiants de sécurité (SID) uniques. Cependant, Linux exige des UID et des GID uniques pour chaque utilisateur et chaque groupe. Si vous exécutez Samba en tant que membre d'un domaine, le service winbindd
est chargé de fournir au système d'exploitation des informations sur les utilisateurs et les groupes du domaine.
Pour permettre au service winbindd
de fournir à Linux des identifiants uniques pour les utilisateurs et les groupes, vous devez configurer le mappage des identifiants dans le fichier /etc/samba/smb.conf
pour :
- La base de données locale (domaine par défaut)
- Le domaine AD ou NT4 dont le serveur Samba est membre
- Chaque domaine de confiance à partir duquel les utilisateurs doivent pouvoir accéder aux ressources de ce serveur Samba
Samba fournit différents back ends de mappage d'ID pour des configurations spécifiques. Les back ends les plus fréquemment utilisés sont les suivants :
Retour à la case départ | Use case |
---|---|
|
Le domaine par défaut |
| Domaines AD uniquement |
| Domaines AD et NT4 |
|
AD, NT4 et le domaine par défaut |
1.4.1. Planification des plages d'ID Samba
Que vous stockiez les UID et GID Linux dans AD ou que vous configuriez Samba pour les générer, chaque configuration de domaine nécessite une plage d'ID unique qui ne doit pas se chevaucher avec d'autres domaines.
Si vous définissez des plages d'identifiants qui se chevauchent, Samba ne fonctionnera pas correctement.
Exemple 1.1. Plages d'identifiants uniques
Le tableau suivant montre les plages de mappage d'ID qui ne se chevauchent pas pour les domaines par défaut (*
), AD-DOM
et TRUST-DOM
.
[global] ... idmap config * : backend = tdb idmap config * : range = 10000-999999 idmap config AD-DOM:backend = rid idmap config AD-DOM:range = 2000000-2999999 idmap config TRUST-DOM:backend = rid idmap config TRUST-DOM:range = 4000000-4999999
Vous ne pouvez attribuer qu'une seule plage par domaine. Par conséquent, laissez suffisamment d'espace entre les plages des domaines. Cela vous permettra d'étendre la plage ultérieurement si votre domaine s'agrandit.
Si vous attribuez ultérieurement une plage différente à un domaine, la propriété des fichiers et des répertoires créés précédemment par ces utilisateurs et ces groupes sera perdue.
1.4.2. The * default domain
Dans un environnement de domaine, vous ajoutez une configuration de mappage d'ID pour chacun des éléments suivants :
- Le domaine dont le serveur Samba est membre
- Chaque domaine de confiance qui doit pouvoir accéder au serveur Samba
Cependant, pour tous les autres objets, Samba attribue des identifiants du domaine par défaut. Ceci inclut :
- Utilisateurs et groupes locaux de Samba
-
Comptes et groupes intégrés à Samba, tels que
BUILTIN\Administrators
Vous devez configurer le domaine par défaut comme décrit dans cette section pour permettre à Samba de fonctionner correctement.
Le back-end du domaine par défaut doit être accessible en écriture pour stocker en permanence les identifiants attribués.
Pour le domaine par défaut, vous pouvez utiliser l'un des back ends suivants :
tdb
Lorsque vous configurez le domaine par défaut pour utiliser le back-end
tdb
, définissez une plage d'ID suffisamment large pour inclure les objets qui seront créés à l'avenir et qui ne font pas partie d'une configuration définie de mappage d'ID de domaine.Par exemple, dans la section
[global]
du fichier/etc/samba/smb.conf
, vous pouvez définir ce qui suit :idmap config * : backend = tdb idmap config * : range = 10000-999999
Pour plus de détails, voir Utilisation du back-end de mappage des ID TDB.
autorid
Lorsque vous configurez le domaine par défaut pour utiliser le back-end
autorid
, l'ajout de configurations supplémentaires de mappage d'ID pour les domaines est facultatif.Par exemple, dans la section
[global]
du fichier/etc/samba/smb.conf
, vous pouvez définir ce qui suit :idmap config * : backend = autorid idmap config * : range = 10000-999999
Pour plus de détails, voir Utilisation du back-end de mappage de l'identifiant autorid.
1.4.3. Utilisation du back-end de mappage de l'ID de la tdb
Le service winbindd
utilise par défaut le back-end de mappage d'ID inscriptible tdb
pour stocker les tables de mappage d'identifiants de sécurité (SID), d'identifiants d'utilisateur (UID) et d'identifiants d'utilisateur (GID). Cela inclut les utilisateurs locaux, les groupes et les mandants intégrés.
Utilisez ce back-end uniquement pour le domaine par défaut *
. Par exemple :
idmap config * : backend = tdb idmap config * : range = 10000-999999
Ressources supplémentaires
1.4.4. Utilisation du back-end de mappage des identifiants publicitaires
Cette section décrit comment configurer un membre Samba AD pour utiliser le back-end de mappage d'ID ad
.
Le back-end de mappage d'ID ad
met en œuvre une API en lecture seule pour lire les informations sur les comptes et les groupes à partir d'AD. Cela présente les avantages suivants :
- Tous les paramètres des utilisateurs et des groupes sont stockés de manière centralisée dans AD.
- Les ID d'utilisateur et de groupe sont cohérents sur tous les serveurs Samba qui utilisent ce back-end.
- Les identifiants ne sont pas stockés dans une base de données locale susceptible d'être corrompue, et les propriétaires des fichiers ne peuvent donc pas être perdus.
Le back-end de mappage d'ID ad
ne prend pas en charge les domaines Active Directory avec des trusts à sens unique. Si vous configurez un membre de domaine dans un Active Directory avec des trusts à sens unique, utilisez à la place l'un des backends de mappage d'ID suivants : tdb
, rid
, ou autorid
.
Le back-end de l'annonce lit les attributs suivants de l'annonce :
Nom de l'attribut AD | Type d'objet | Mises en correspondance avec |
---|---|---|
| Utilisateur et groupe | Nom de l'utilisateur ou du groupe, en fonction de l'objet |
| User | Identifiant de l'utilisateur (UID) |
| Groupe | ID du groupe (GID) |
| User | Chemin d'accès à l'interpréteur de commandes de l'utilisateur |
| User | Chemin d'accès au répertoire personnel de l'utilisateur |
| User | ID du groupe primaire |
[a]
Samba ne lit cet attribut que si vous avez défini idmap config DOMAIN:unix_nss_info = yes .
[b]
Samba ne lit cet attribut que si vous avez défini idmap config DOMAIN:unix_primary_group = yes .
|
Conditions préalables
-
Les utilisateurs et les groupes doivent avoir des identifiants uniques définis dans AD, et les identifiants doivent être compris dans la plage configurée dans le fichier
/etc/samba/smb.conf
. Les objets dont les ID sont en dehors de cette plage ne seront pas disponibles sur le serveur Samba. - Les utilisateurs et les groupes doivent avoir tous les attributs requis définis dans AD. Si les attributs requis sont manquants, l'utilisateur ou le groupe ne sera pas disponible sur le serveur Samba. Les attributs requis dépendent de votre configuration. conditions préalables
- Vous avez installé Samba.
-
La configuration de Samba, à l'exception du mappage des identifiants, existe dans le fichier
/etc/samba/smb.conf
.
Procédure
Modifiez la section
[global]
dans le fichier/etc/samba/smb.conf
:Ajoutez une configuration de mappage d'ID pour le domaine par défaut (
*
) s'il n'existe pas. Par exemple :idmap config * : backend = tdb idmap config * : range = 10000-999999
Activer le back-end de mappage de
ad
ID pour le domaine AD :idmap config DOMAIN: backend = ad
Définir la plage d'ID attribuée aux utilisateurs et aux groupes dans le domaine AD. Par exemple :
idmap config DOMAIN: range = 2000000-2999999
ImportantLa plage ne doit pas se chevaucher avec une autre configuration de domaine sur ce serveur. De plus, la plage doit être suffisamment grande pour inclure tous les identifiants attribués à l'avenir. Pour plus de détails, voir Planification des plages d'ID Samba.
Définir que Samba utilise le schéma RFC 2307 lors de la lecture des attributs d'AD :
idmap config DOMAIN: schema_mode = rfc2307
Pour permettre à Samba de lire le shell de connexion et le chemin d'accès au répertoire personnel de l'utilisateur à partir de l'attribut AD correspondant, définissez :
idmap config DOMAIN: unix_nss_info = yes
Vous pouvez également définir un chemin d'accès au répertoire d'accueil et un shell de connexion uniformes pour l'ensemble du domaine, qui seront appliqués à tous les utilisateurs. Par exemple :
template shell = /bin/bash template homedir = /home/%U
Par défaut, Samba utilise l'attribut
primaryGroupID
d'un objet utilisateur comme groupe primaire de l'utilisateur sous Linux. Vous pouvez également configurer Samba pour qu'il utilise la valeur définie dans l'attributgidNumber
:idmap config DOMAIN: unix_primary_group = yes
Vérifiez le fichier
/etc/samba/smb.conf
:# testparm
Recharger la configuration de Samba :
# smbcontrol all reload-config
Ressources supplémentaires
- The * default domain
-
smb.conf(5)
etidmap_ad(8)
pages de manuel -
VARIABLE SUBSTITUTIONS
section dans la page de manuelsmb.conf(5)
1.4.5. Utilisation du back-end de mappage de l'identifiant rid
Cette section décrit comment configurer un membre du domaine Samba pour qu'il utilise le back-end rid
ID mapping.
Samba peut utiliser l'identifiant relatif (RID) d'un SID Windows pour générer un ID sur Red Hat Enterprise Linux.
Le RID est la dernière partie du SID. Par exemple, si le SID d'un utilisateur est S-1-5-21-5421822485-1151247151-421485315-30014
, alors 30014
est le RID correspondant.
Le back-end de mappage d'ID rid
implémente une API en lecture seule pour calculer les informations sur les comptes et les groupes sur la base d'un schéma de mappage algorithmique pour les domaines AD et NT4. Lorsque vous configurez le back-end, vous devez définir le RID le plus bas et le plus élevé dans le paramètre idmap config DOMAIN : range
dans le paramètre Samba ne mappera pas les utilisateurs ou les groupes avec un RID inférieur ou supérieur à celui défini dans ce paramètre.
En tant que back-end en lecture seule, rid
ne peut pas attribuer de nouveaux ID, comme pour les groupes BUILTIN
. Par conséquent, n'utilisez pas ce back-end pour le domaine par défaut *
.
Avantages de l'utilisation du back-end rid
- Tous les utilisateurs et groupes du domaine dont le RID se situe dans la plage configurée sont automatiquement disponibles sur le membre du domaine.
- Il n'est pas nécessaire d'attribuer manuellement des identifiants, des répertoires personnels et des shells de connexion.
Inconvénients de l'utilisation du back-end rid
- Tous les utilisateurs du domaine se voient attribuer le même shell de connexion et le même répertoire personnel. Vous pouvez toutefois utiliser des variables.
-
Les ID d'utilisateurs et de groupes ne sont identiques entre les membres du domaine Samba que si tous utilisent le back-end
rid
avec les mêmes paramètres de plage d'ID. - Vous ne pouvez pas exclure des utilisateurs ou des groupes individuels de la disponibilité sur le membre du domaine. Seuls les utilisateurs et les groupes en dehors de la plage configurée sont exclus.
-
D'après les formules utilisées par le service
winbindd
pour calculer les ID, des doublons peuvent se produire dans les environnements multi-domaines si des objets de différents domaines ont le même RID.
Conditions préalables
- Vous avez installé Samba.
-
La configuration de Samba, à l'exception du mappage des identifiants, existe dans le fichier
/etc/samba/smb.conf
.
Procédure
Modifiez la section
[global]
dans le fichier/etc/samba/smb.conf
:Ajoutez une configuration de mappage d'ID pour le domaine par défaut (
*
) s'il n'existe pas. Par exemple :idmap config * : backend = tdb idmap config * : range = 10000-999999
Activer le back-end de mappage de
rid
ID pour le domaine :idmap config DOMAIN: backend = rid
Définissez un intervalle suffisamment grand pour inclure tous les RID qui seront attribués à l'avenir. Par exemple :
idmap config DOMAIN: range = 2000000-2999999
Samba ignore les utilisateurs et les groupes dont les RID dans ce domaine ne sont pas compris dans l'intervalle.
ImportantLa plage ne doit pas se chevaucher avec une autre configuration de domaine sur ce serveur. De plus, la plage doit être suffisamment grande pour inclure tous les identifiants attribués à l'avenir. Pour plus de détails, voir Planification des plages d'ID Samba.
Définir un shell et un chemin d'accès au répertoire personnel qui seront attribués à tous les utilisateurs mappés. Par exemple :
template shell = /bin/bash template homedir = /home/%U
Vérifiez le fichier
/etc/samba/smb.conf
:# testparm
Recharger la configuration de Samba :
# smbcontrol all reload-config
Ressources supplémentaires
- The * default domain
-
VARIABLE SUBSTITUTIONS
section dans la page de manuelsmb.conf(5)
-
Calcul de l'ID local à partir d'un RID, voir la page de manuel
idmap_rid(8)
1.4.6. Utilisation du back-end de mappage de l'identifiant autorid
Cette section décrit comment configurer un membre du domaine Samba pour qu'il utilise le back-end autorid
ID mapping.
Le back-end autorid
fonctionne de la même manière que le back-end rid
ID mapping, mais il peut attribuer automatiquement des ID pour différents domaines. Cela vous permet d'utiliser le back-end autorid
dans les situations suivantes :
-
Uniquement pour le domaine par défaut
*
-
Pour le domaine par défaut
*
et les domaines supplémentaires, sans qu'il soit nécessaire de créer des configurations de mappage d'ID pour chacun des domaines supplémentaires - Uniquement pour des domaines spécifiques
Si vous utilisez autorid
pour le domaine par défaut, l'ajout d'une configuration supplémentaire de mappage d'ID pour les domaines est facultatif.
Certaines parties de cette section ont été adoptées à partir de la documentation idmap config autorid publiée dans le Samba Wiki. Licence : CC BY 4.0. Auteurs et contributeurs : Voir l'onglet historique de la page Wiki.
Avantages de l'utilisation du back-end autorid
- Tous les utilisateurs et groupes du domaine dont l'UID et le GID calculés se trouvent dans la plage configurée sont automatiquement disponibles sur le membre du domaine.
- Il n'est pas nécessaire d'attribuer manuellement des identifiants, des répertoires personnels et des shells de connexion.
- Pas d'ID en double, même si plusieurs objets dans un environnement multi-domaines ont le même RID.
Inconvénients
- Les ID d'utilisateur et de groupe ne sont pas les mêmes pour tous les membres du domaine Samba.
- Tous les utilisateurs du domaine se voient attribuer le même shell de connexion et le même répertoire personnel. Vous pouvez toutefois utiliser des variables.
- Vous ne pouvez pas exclure des utilisateurs ou des groupes individuels de la disponibilité sur le membre du domaine. Seuls les utilisateurs et les groupes dont l'UID ou le GID calculé est en dehors de la plage configurée sont exclus.
Conditions préalables
- Vous avez installé Samba.
-
La configuration de Samba, à l'exception du mappage des identifiants, existe dans le fichier
/etc/samba/smb.conf
.
Procédure
Modifiez la section
[global]
dans le fichier/etc/samba/smb.conf
:Activer le back-end de mappage d'ID
autorid
pour le domaine par défaut*
:idmap config * : backend = autorid
Définissez une plage suffisamment grande pour attribuer des identifiants à tous les objets existants et futurs. Par exemple :
idmap config * : range = 10000-999999
Samba ignore les utilisateurs et les groupes dont les ID calculés dans ce domaine ne sont pas compris dans cette plage.
AvertissementUne fois que vous avez défini la plage et que Samba commence à l'utiliser, vous ne pouvez augmenter que la limite supérieure de la plage. Toute autre modification de la plage peut entraîner de nouvelles attributions d'ID, et donc la perte de propriétaires de fichiers.
Il est possible de définir une taille de plage. Par exemple :
idmap config * : rangesize = 200000
Samba assigns this number of continuous IDs for each domain’s object until all IDs from the range set in the
idmap config * : range
parameter are taken.NoteSi vous définissez une taille de plage, vous devez adapter la plage en conséquence. La plage doit être un multiple de la taille de la plage.
Définir un shell et un chemin d'accès au répertoire personnel qui seront attribués à tous les utilisateurs mappés. Par exemple :
template shell = /bin/bash template homedir = /home/%U
En option, ajoutez une configuration supplémentaire de mappage d'ID pour les domaines. Si aucune configuration pour un domaine individuel n'est disponible, Samba calcule l'ID en utilisant les paramètres du back-end
autorid
dans le domaine par défaut*
précédemment configuré.ImportantLa plage ne doit pas se chevaucher avec une autre configuration de domaine sur ce serveur. De plus, la plage doit être suffisamment grande pour inclure tous les identifiants attribués à l'avenir. Pour plus de détails, voir Planification des plages d'ID Samba.
Vérifiez le fichier
/etc/samba/smb.conf
:# testparm
Recharger la configuration de Samba :
# smbcontrol all reload-config
Ressources supplémentaires
-
THE MAPPING FORMULAS
section dans la page de manuelidmap_autorid(8)
-
rangesize
description du paramètre dans la page de manuelidmap_autorid(8)
-
VARIABLE SUBSTITUTIONS
section dans la page de manuelsmb.conf(5)