Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
utilisateurs:quentin:samba_active_directory_domain_controller [Le 23/03/2014, 20:00]
Qedinux
utilisateurs:quentin:samba_active_directory_domain_controller [Le 11/09/2022, 13:12] (Version actuelle)
moths-art Suppression des espaces en fin de ligne (détecté et corrigé via le bot wiki-corrector (https://forum.ubuntu-fr.org/viewtopic.php?id=2067892)
Ligne 46: Ligne 46:
 ... ...
 ===== Authentification avec Samba AD DC ===== ===== Authentification avec Samba AD DC =====
-==== Authentification des utilisateurs sur le DC ==== 
 Afin de réaliser l'​authentification des utilisateurs d'AD, plusieurs méthodes existent : Afin de réaliser l'​authentification des utilisateurs d'AD, plusieurs méthodes existent :
   * [[https://​wiki.samba.org/​index.php/​Local_user_management_and_authentication/​sssd|sssd et pam_sss]]   * [[https://​wiki.samba.org/​index.php/​Local_user_management_and_authentication/​sssd|sssd et pam_sss]]
Ligne 53: Ligne 52:
 Seule cette dernière méthode est expliquée dans cette documentation. Seule cette dernière méthode est expliquée dans cette documentation.
  
 +==== Authentification des utilisateurs sur le DC avec //winbind// ====
 +
 +=== Installation et configuration pour utiliser //winbind// ===
 Les paquets suivants sont requis pour la mise en œuvre de cette authentification. Les paquets suivants sont requis pour la mise en œuvre de cette authentification.
 <​code>​sudo apt-get install libnss-winbind libpam-winbind winbind</​code>​ <​code>​sudo apt-get install libnss-winbind libpam-winbind winbind</​code>​
  
-Premièrement,​ il faut configurer le Name Service Switch (nsswitch) par l'​ajout de winbind comme méthode pour les sections //passwd// et //group//+Il faut configurer le Name Service Switch (nsswitch) par l'​ajout de winbind comme méthode pour les sections //passwd// et //group//
 +Par exemple avec la commande : 
 +<​code>​sudo sed -i '/​^passwd:​\|^group:/​{ s/$/ winbind/; };' /​etc/​nsswitch.conf</​code>​
 <file - /​etc/​nsswitch.conf>​... <file - /​etc/​nsswitch.conf>​...
-    ​passwd: compat winbind +passwd: compat winbind 
-    group: ​ compat winbind+group: ​ compat winbind
 ... ...
 </​file>​ </​file>​
  
-Ceci permet ​d'utiliser les utilisateurs et groupes venant de AD. +Ceci permet ​de chercher et utiliser les utilisateurs, leurs mots de passes ​et les groupes venant de AD au travers de //winbind//
-Par défaut sur un DC, les commandes ci-dessous retourne la liste de tous les utilisateurs et groupes.+Par défaut sur un DC, les commandes ci-dessous retourne la liste de tous les utilisateurs et groupes ​(y compris ceux d'AD). Ce comportement peut être modifié avec l'​option //...// dans la partie global du fichier de configuration de samba (/​etc/​samba/​smb.conf)
 <​code>​getent passwd <​code>​getent passwd
 getent group</​code>​ getent group</​code>​
  
-Création du home directory ​pour l'​utilisateur ​du domaine.+Les UID et GID, s'ils n'​existent pas dans l'AD, sont automatiquement généré (par winbind / idmap) mais ils ne sont pas écrits dans AD par winbind. Cette remarque est importante car d'​autres machines récupérant ces même informations de l'AD génèreront d'​autres UID et GID pour un même utilisateur. Ceci crée une incohérance dans le domaine. 
 + 
 +Idmap écrit les données dans le fichier /​var/​lib/​samba/​private/​idmap.ldb. Le range prévu pour la création automatique des id's est définit dans dn: CN=CONFIG avec les valeurs lower et upperBound. 
 +<​code>​sudo ldbsearch -H /​var/​lib/​samba/​private/​idmap.ldb '​cn=config'​ 
 +# record 1 
 +dn: CN=CONFIG 
 +cn: CONFIG 
 +lowerBound: 3000000 
 +upperBound: 4000000 
 +xidNumber: 3000017 
 +distinguishedName:​ CN=CONFIG 
 +</​code>​ 
 + 
 +Le fichier //​idmap.ldb//​ n'est présent que sur les DC et pas sur les //member server//. Est-il bon de copier les valeurs des xidNumber vers les uidNumber et gidNumber des utilisateurs et groupes d'AD ? 
 + 
 +En tout cas, afin d'​éviter ce type de problème, il est préférable de définir ces valeurs dans AD. Pour ce faire, il faut définir un range d'​identifiant réservé uniquement pour AD, par exemple de 100000 à 999999. De plus, afin de garantir que seuls les utilisateurs et groupes possèdant un UID et GID dans AD puissent s'​authentifier sur une machine Linux du domaine, il faut ajouter les options suivantes dans la partie globale du fichier de configuration de samba. 
 +<file - /​etc/​samba/​smb.conf>​ 
 +... 
 +    # Pas nécessaire sur un DC car les valeurs sont prises dans idmap.ldb si elles n'​existent pas dans AD 
 +    idmap config EXAMPLE:​backend = ad 
 +    idmap config EXAMPLE:​schema_mode = rfc2307 
 +    idmap config EXAMPLE:​range = 100000-999999 
 +    
 +    # A ajouter sur les member servers mais pas sur les DC 
 +    #winbind nss info = rfc2307 
 +... 
 +</​file>​ 
 + 
 +== Création du home directory ​de l'​utilisateur ​== 
 + 
 +  * Cette première méthode est très générique et s'​applique à tous les utilisateurs de la machine (pas uniquement ceux d'AD)
 <file - /​usr/​share/​pam-configs/​mkhomedir>​ <file - /​usr/​share/​pam-configs/​mkhomedir>​
 Default: no Default: no
Ligne 77: Ligne 111:
 </​file>​ </​file>​
  
-Alternative en mofdifiant le fichier /​usr/​share/​pam-config/​winbind +  * Alternative en mofdifiant le fichier /​usr/​share/​pam-config/​winbind 
-<file - /​usr/​share/​pam-config/​winbind>​...+<file - /​usr/​share/​pam-configs/​winbind>​...
 Session: Session:
         optional ​                       pam_winbind.so mkhomedir         optional ​                       pam_winbind.so mkhomedir
 ...</​file>​ ...</​file>​
 +Cette alternative crée bien le home directory de l'​utilisateur. Les droits sur ce répertoire sont correctement définis (700 avec owner: uidNumber et group: gidNumber)
  
-Un autre alternative consiste à monter le home directory de l'​utilisateur lors du login. Une option du fichier de configuration /​etc/​samba/​smb.conf est //homedir map = auto.home//​. Ceci fait référence à autofs. Développement Ult. +  * Un autre alternative consiste à monter le home directory de l'​utilisateur lors du login. Une option du fichier de configuration /​etc/​samba/​smb.conf est //homedir map = auto.home//​. Ceci fait référence à autofs. Développement Ult. 
- +== Limitation ​de l'​accès à un ou plusieurs ​SID == 
-Possibilité ​de limiter ​l'​accès à un ou plusieurs ​groupes ou utilisateurs sur base du SID +Il est possible de limiter la possibilité l'​accès à certains ​utilisateurs ​ou certains groupes ​sur base de leur SID. Il faut ajouter //require_membership_of=<SID>// ​à la fin de la ligne pam_winbind.so de la section ​//Auth:// du fichier /​usr/​share/​pam-config/​winbind 
-Ajouter ​require_membership_of=SID à la fin de la ligne pam_winbind.so de la section Auth: du fichier /​usr/​share/​pam-config/​winbind +<file - /​usr/​share/​pam-configs/​winbind>​...
-<file - /​usr/​share/​pam-config/​winbind>​...+
 Auth: Auth:
         [success=end default=ignore] ​   pam_winbind.so krb5_auth krb5_ccache_type=FILE cached_login try_first_pass required_membership_of=S-1-5-21-5555555555-555555555-5555555555-512         [success=end default=ignore] ​   pam_winbind.so krb5_auth krb5_ccache_type=FILE cached_login try_first_pass required_membership_of=S-1-5-21-5555555555-555555555-5555555555-512
Ligne 93: Ligne 127:
 Le RID 512 représente le groupe //Domain Admins// Le RID 512 représente le groupe //Domain Admins//
  
-Activer cette nouvelle ​configuration :+== Appliquer les modifications des configurations PAM == 
 +Afin d'​appliquer les modifications faites aux différents fichiers de configuration ​de pam (/​usr/​share/​pam-configs/​*),​ il faut exécuter ​:
 <​code>​sudo pam-auth-update</​code>​ <​code>​sudo pam-auth-update</​code>​
  
Ligne 121: Ligne 156:
 } }
                                                                                                                                                                                               ​                                                                                                                                                                                               ​
-findMaxId() {                                                                                                                                                                                 ​+findMaxId() {
   ldbsearch -H $sam "​$regexp"​ $field | sed '/^# Referral/ { :loop; N; $! b loop; d; }; s/​^\([a-zA-Z0-9]*\):​ \(.*\)$/​\1="​\2"/​g;​ /​^$/​d;'​ | awk '/^# record/​{n++}{print > f n}' f=$tmpRecord ​       ldbsearch -H $sam "​$regexp"​ $field | sed '/^# Referral/ { :loop; N; $! b loop; d; }; s/​^\([a-zA-Z0-9]*\):​ \(.*\)$/​\1="​\2"/​g;​ /​^$/​d;'​ | awk '/^# record/​{n++}{print > f n}' f=$tmpRecord ​    
                                                                                                                                                                                               ​                                                                                                                                                                                               ​
  • utilisateurs/quentin/samba_active_directory_domain_controller.1395601203.txt.gz
  • Dernière modification: Le 23/03/2014, 20:00
  • par Qedinux