Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
utilisateurs:quentin:samba_active_directory_domain_controller [Le 04/03/2014, 13:19] – Qedinux | utilisateurs:quentin:samba_active_directory_domain_controller [Le 27/03/2014, 14:42] (Version actuelle) – Qedinux | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
+ | | ||
+ | ====== Samba - Active Directory Domain Controller (AD DC) ====== | ||
+ | Brouillon avant de compléter ou créer un nouvelle page concernant l' | ||
+ | |||
+ | La version actuelle se trouve ici [[: | ||
+ | ... | ||
+ | |||
+ | ===== Versions ===== | ||
+ | ... | ||
+ | ===== Installation de Samba===== | ||
+ | ==== Paramètres généraux ==== | ||
+ | Avant toute installation, | ||
+ | |||
+ | |Nom de domaine |example.com | \\ RFC 2606 | ||
+ | |Royaume (realm) |EXAMPLE.COM | | ||
+ | |Nom de NetBIOS |example | | ||
+ | |Nom du serveur |ubndc01 | | ||
+ | |Adresse IP du serveur |192.168.1.11 | | ||
+ | |Rôle du serveur |DC (contrôleur de domaine) | | ||
+ | ==== Pré-requis ==== | ||
+ | ... | ||
+ | ==== Installation à partir des dépôts ==== | ||
+ | ... | ||
+ | ==== Installation à partir des sources ==== | ||
+ | ... | ||
+ | ===== Création d'un premier DC dans une nouvelle forêt ===== | ||
+ | ... | ||
+ | ==== Initialisation de Samba ==== | ||
+ | ... | ||
+ | ==== Démarrer Samba AD DC ==== | ||
+ | ... | ||
+ | ===== Test de Samba AD DC ===== | ||
+ | ... | ||
+ | ==== Tests des ACL ==== | ||
+ | ... | ||
+ | ==== Tests des attributs étendus ==== | ||
+ | ... | ||
+ | ==== Tests du DNS ==== | ||
+ | ... | ||
+ | ==== Tests de Kerberos ==== | ||
+ | ... | ||
+ | ==== Tests de SMB ==== | ||
+ | ... | ||
+ | ===== Mise à jour depuis un domaine Samba de type NT4 vers un AD===== | ||
+ | ... | ||
+ | ===== Authentification avec Samba AD DC ===== | ||
+ | Afin de réaliser l' | ||
+ | * [[https:// | ||
+ | * [[https:// | ||
+ | * [[https:// | ||
+ | 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. | ||
+ | < | ||
+ | |||
+ | Il faut configurer le Name Service Switch (nsswitch) par l' | ||
+ | Par exemple avec la commande : | ||
+ | < | ||
+ | <file - / | ||
+ | passwd: compat winbind | ||
+ | group: | ||
+ | ... | ||
+ | </ | ||
+ | |||
+ | Ceci permet de chercher et utiliser les utilisateurs, | ||
+ | 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' | ||
+ | < | ||
+ | getent group</ | ||
+ | |||
+ | Les UID et GID, s'ils n' | ||
+ | |||
+ | Idmap écrit les données dans le fichier / | ||
+ | < | ||
+ | # record 1 | ||
+ | dn: CN=CONFIG | ||
+ | cn: CONFIG | ||
+ | lowerBound: 3000000 | ||
+ | upperBound: 4000000 | ||
+ | xidNumber: 3000017 | ||
+ | distinguishedName: | ||
+ | </ | ||
+ | |||
+ | Le fichier // | ||
+ | |||
+ | En tout cas, afin d' | ||
+ | <file - / | ||
+ | ... | ||
+ | # Pas nécessaire sur un DC car les valeurs sont prises dans idmap.ldb si elles n' | ||
+ | idmap config EXAMPLE: | ||
+ | idmap config EXAMPLE: | ||
+ | idmap config EXAMPLE: | ||
+ | |||
+ | # A ajouter sur les member servers mais pas sur les DC | ||
+ | #winbind nss info = rfc2307 | ||
+ | ... | ||
+ | </ | ||
+ | |||
+ | == Création du home directory de l' | ||
+ | |||
+ | * Cette première méthode est très générique et s' | ||
+ | <file - / | ||
+ | Default: no | ||
+ | Priority: 900 | ||
+ | Session-Type: | ||
+ | Session-Final: | ||
+ | required | ||
+ | </ | ||
+ | |||
+ | * Alternative en mofdifiant le fichier / | ||
+ | <file - / | ||
+ | Session: | ||
+ | optional | ||
+ | ...</ | ||
+ | Cette alternative crée bien le home directory de l' | ||
+ | |||
+ | * Un autre alternative consiste à monter le home directory de l' | ||
+ | == Limitation de l' | ||
+ | Il est possible de limiter la possibilité l' | ||
+ | <file - / | ||
+ | Auth: | ||
+ | [success=end default=ignore] | ||
+ | ...</ | ||
+ | Le RID 512 représente le groupe //Domain Admins// | ||
+ | |||
+ | == Appliquer les modifications des configurations PAM == | ||
+ | Afin d' | ||
+ | < | ||
+ | |||
+ | ==== Générer les uidNumber et gidNumber dans l'AD ==== | ||
+ | Le script suivant permet d' | ||
+ | <note important> | ||
+ | <file bash uid-gid_master.sh> | ||
+ | #!/bin/bash | ||
+ | |||
+ | # Vérifier si ces valeurs existent dans smb.conf | ||
+ | # idmap config REALM:range = min-max | ||
+ | rangeMin=100000 | ||
+ | rangeMax=999999 | ||
+ | |||
+ | sam=/ | ||
+ | |||
+ | createTmpDir() { | ||
+ | tmpDir=$(mktemp -d --tmpdir addGid.XXXXXX) || exit 1 | ||
+ | tmpRecord=$tmpDir/ | ||
+ | tmpLdif=$tmpDir/ | ||
+ | } | ||
+ | cleanTmpDir() { | ||
+ | rm $tmpDir/* | ||
+ | } | ||
+ | removeTmpDir() { | ||
+ | rm -r $tmpDir | ||
+ | } | ||
+ | | ||
+ | findMaxId() { | ||
+ | ldbsearch -H $sam " | ||
+ | | ||
+ | maxID=$rangeMin | ||
+ | for file in `grep -l -E " | ||
+ | do | ||
+ | source $file | ||
+ | if [ ${!field} -gt $rangeMax ] | ||
+ | then | ||
+ | echo " | ||
+ | elif [ ${!field} -lt $rangeMin ] | ||
+ | then | ||
+ | echo " | ||
+ | else | ||
+ | [ ${!field} -gt $maxID ] && maxID=${!field} | ||
+ | fi | ||
+ | done | ||
+ | |||
+ | echo "Max ID found for $field: $maxID" | ||
+ | } | ||
+ | |||
+ | addIdNumber() { | ||
+ | for file in `grep -L -E " | ||
+ | do | ||
+ | ((maxID++)) | ||
+ | source $file | ||
+ | echo " | ||
+ | echo "dn: $dn | ||
+ | changetype: modify | ||
+ | add: $field | ||
+ | $field: $maxID" | ||
+ | ldbmodify -H $sam $tmpLdif | ||
+ | done | ||
+ | } | ||
+ | |||
+ | umask 0077 | ||
+ | createTmpDir | ||
+ | |||
+ | field=uidNumber | ||
+ | regexp=" | ||
+ | findMaxId | ||
+ | addIdNumber | ||
+ | cleanTmpDir | ||
+ | |||
+ | field=gidNumber | ||
+ | regexp=" | ||
+ | findMaxId | ||
+ | addIdNumber | ||
+ | cleanTmpDir | ||
+ | |||
+ | removeTmpDir | ||
+ | |||
+ | exit 0 | ||
+ | </ | ||
+ | |||
+ | |||
+ | ===== Informations optionnelles et complémentaires ===== | ||
+ | ... | ||
+ | ===== Références ===== | ||
+ | ... | ||
+ | // |