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 20/03/2014, 22:30] – Qedinux | utilisateurs:quentin:samba_active_directory_domain_controller [Le 11/09/2022, 13:12] (Version actuelle) – 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) moths-art | ||
|---|---|---|---|
| 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' |
| + | * [[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 // | ||
| + | Les paquets suivants sont requis pour la mise en œuvre de cette authentification. | ||
| < | < | ||
| - | Ajout de winbin dans le fichier de configuration | + | Il faut configurer |
| + | Par exemple avec la commande : | ||
| + | < | ||
| <file - / | <file - / | ||
| - | | + | passwd: compat winbind |
| - | group: | + | group: |
| ... | ... | ||
| </ | </ | ||
| - | Ceci permet | + | Ceci permet |
| - | 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 |
| < | < | ||
| getent group</ | getent group</ | ||
| - | Création du home directory | + | 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 | ||
| + | |||
| + | * Cette première méthode est très générique et s' | ||
| <file - / | <file - / | ||
| Default: no | Default: no | ||
| Ligne 70: | Ligne 111: | ||
| </ | </ | ||
| - | Alternative en mofdifiant le fichier / | + | * Alternative en mofdifiant le fichier / |
| - | <file - / | + | <file - / |
| Session: | Session: | ||
| optional | optional | ||
| ...</ | ...</ | ||
| + | Cette alternative crée bien le home directory de l' | ||
| - | Un autre alternative consiste à monter le home directory de l' | + | * Un autre alternative consiste à monter le home directory de l' |
| - | + | == Limitation | |
| - | Possibilité | + | Il est possible de limiter la possibilité l' |
| - | Ajouter | + | <file - / |
| - | <file - / | + | |
| Auth: | Auth: | ||
| [success=end default=ignore] | [success=end default=ignore] | ||
| Ligne 86: | Ligne 127: | ||
| Le RID 512 représente le groupe //Domain Admins// | Le RID 512 représente le groupe //Domain Admins// | ||
| - | Activer cette nouvelle | + | == Appliquer les modifications des configurations PAM == |
| + | Afin d' | ||
| < | < | ||
| ==== Générer les uidNumber et gidNumber dans l'AD ==== | ==== Générer les uidNumber et gidNumber dans l'AD ==== | ||
| - | Deux scripts " | + | Le script suivant permet d' |
| - | <file - uid_master.sh> | + | <note important> |
| + | < | ||
| #!/bin/bash | #!/bin/bash | ||
| Ligne 100: | Ligne 143: | ||
| sam=/ | sam=/ | ||
| - | tmpDir=$(mktemp -d --tmpdir addUid.XXXXXX) || exit 1 | ||
| - | umask 0077 | ||
| - | ldbsearch -H $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 | ||
| - | maxUid=$rangeMin | + | |
| - | for file in `grep -l -E " | + | } |
| - | do | + | |
| - | source $file | + | |
| - | if [ $uidNumber -gt $rangeMax ] | + | |
| - | then | + | |
| - | | + | |
| - | elif [ $uidNumber -lt $rangeMin ] | + | |
| - | then | + | |
| - | echo " | + | |
| - | else | + | |
| - | [ $uidNumber -gt $maxUid ] && maxUid=$uidNumber | + | |
| - | fi | + | |
| - | done | + | |
| - | echo "Max UID found: $maxUid" | + | addIdNumber() { |
| - | + | for file in `grep -L -E "^$field=" ${tmpRecord}*` | |
| - | uidNumber=$(($maxUid+1)) | + | do |
| - | for file in `grep -L -E "^uidNumber=" $tmpDir/*` | + | |
| - | do | + | |
| - | source $file | + | echo " |
| - | echo " | + | echo "dn: $dn |
| - | echo "dn: $dn | + | |
| changetype: modify | changetype: modify | ||
| - | add: uidNumber | + | add: $field |
| - | uidNumber: $uidNumber" > $tmpDir/ldif | + | $field: $maxID" > $tmpLdif |
| - | ldbmodify -H $sam $tmpDir/ldif | + | ldbmodify -H $sam $tmpLdif |
| - | | + | |
| - | done | + | } |
| - | rm -r $tmpDir | ||
| - | </ | ||
| - | <file bash 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=/ | ||
| - | tmpDir=$(mktemp -d --tmpdir addGid.XXXXXX) || exit 1 | ||
| umask 0077 | umask 0077 | ||
| + | createTmpDir | ||
| - | ldbsearch -H $sam '(objectclass=group)' gidNumber | sed '/^# Referral/ { :loop; N; $! b loop; d; }; s/^\([a-zA-Z0-9]*\): \(.*\)$/ | + | field=uidNumber |
| + | regexp=" | ||
| + | findMaxId | ||
| + | addIdNumber | ||
| + | cleanTmpDir | ||
| - | maxGid=$rangeMin | + | field=gidNumber |
| - | for file in `grep -l -E "^gidNumber=" | + | regexp="(objectclass=group)" |
| - | do | + | findMaxId |
| - | source $file | + | addIdNumber |
| - | if [ $gidNumber -gt $rangeMax ] | + | cleanTmpDir |
| - | then | + | |
| - | echo " | + | |
| - | elif [ $gidNumber -lt $rangeMin ] | + | |
| - | then | + | |
| - | echo " | + | |
| - | else | + | |
| - | [ $gidNumber -gt $maxGid ] && maxGid=$gidNumber | + | |
| - | fi | + | |
| - | done | + | |
| - | echo "Max GID found: $maxGid" | + | removeTmpDir |
| - | + | ||
| - | gidNumber=$(($maxGid+1)) | + | |
| - | for file in `grep -L -E " | + | |
| - | do | + | |
| - | source $file | + | |
| - | echo " | + | |
| - | echo "dn: $dn | + | |
| - | changetype: modify | + | |
| - | add: gidNumber | + | |
| - | gidNumber: $gidNumber" | + | |
| - | ldbmodify -H $sam $tmpDir/ | + | |
| - | gidNumber=$(($gidNumber+1)) | + | |
| - | done | + | |
| - | rm -r $tmpDir | + | exit 0 |
| </ | </ | ||
