Différences
Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentesRévision précédente | |||
| utilisateurs:quentin:samba_active_directory_domain_controller [Le 27/03/2014, 13:31] – 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 ===== | ||
| + | ... | ||
| + | // | ||
