Gestion de l'Active Directory en ligne de commande

Bien qu'il existe quelques restrictions, la majorité des opérations de gestion peuvent être réalisées en ligne de commande sur les modules Scribe, AmonEcole et Seth configurés en tant que contrôleur de domaine.

Les opérations présentées sont réalisables sur le serveur que le contrôleur de domaine soit déclaré comme additionnel ou non.

Attention

La synchronisation des données entre les différents DC n'est pas instantanée et peut prendre jusqu'à trois minutes.

Modules en mode conteneur

Sur les modules Scribe et AmonEcole, le contrôleur de domaine est la machine conteneur nommée addc.

Les commandes doivent être exécutées dans ce conteneur.

Pour entrer dans le conteneur addc sur un serveur Scribe ou AmonEcole, exécuter la commande suivante :

ssh addc

Sur le module Seth, le contrôleur de domaine est installé sur le maître.

Gestion des groupes et des utilisateurs

  • Lister les groupes

    samba-tool group list

  • Lister les utilisateurs

    samba-tool user list

  • Créer un utilisateur

    samba-tool user create titi "Mot:DeP455"

  • Modifier le mot de passe d'un utilisateur

    samba-tool user setpassword titi

    ou (noter le "\n" entre les deux mots de passe)

    echo -e "MotDePasse?\nMotDePasse?" | smbpasswd -s titi

  • Inscrire un utilisateur à un groupe

    samba-tool group addmembers "Domain Admins" titi

  • Consulter les attributs d'un utilisateur

    pdbedit -Lv titi

  • Paramétrer le répertoire personnel, la lettre de montage et le profil d'un utilisateur

  • pdbedit -h '\\file.ac-test.fr\titi' -D 'U:' -p '\\file.ac-test.fr\profiles\titi' titi

  • Supprimer un utilisateur

    samba-tool user delete titi

Jetons Kerberos et fichiers keytab

Les fichiers keytab, abréviation de « key table » (table des clés), sont des fichiers qui contiennent une clé de chiffrement pour un service ou un hôte.

Ils sont utiles pour réaliser des opération d'administration qui nécessite l'utilisation d'un compte avec pouvoirs sans avoir à en saisir le mot de passe.

L'article suivant (en anglais) explique plutôt bien ce qu'est un keytab : https://social.technet.microsoft.com/wiki/contents/articles/36470.kerberos-keytabs-explained.aspx

Compte machine

Un keytab du compte machine du serveur est automatiquement généré dans le fichier /var/lib/samba/eole-ad-dc.keytab.

Il est ainsi possible d'utiliser ce fichier dans des scripts, pour ajouter des entrées DNS, par exemple :

1
# initialisation d'un jeton Kerberos à l'aide du fichier keytab
2
kinit ADDC@AC-TEST.FR -k -t /var/lib/samba/eole-ad-dc.keytab
3
# ajout d'une entrée DNS locale
4
samba-tool dns add dc1.ac-test.fr ac-test.fr mac10 A 192.168.0.10 -k 1
5
# vérification de la résolution d'un nom par le DNS local
6
dig @localhost mac10.ac-test.fr +short
7
# suppression d'une entrée DNS locale
8
samba-tool dns delete dc1.ac-test.fr ac-test.fr mac10 A 192.168.0.10 -k 1
9
# destruction du jeton Kerberos
10
kdestroy

Truc & astuce

Le jeton Kerberos[1] permet de ne pas avoir fournir de nom d'utilisateur et mot de passe aux commandes d'ajout/suppression d'entrée DNS.

Ceux-ci sont remplacés par l'option « -k 1 ».

Compte utilisateur

De la même façon, il est possible de créer un fichier keytab pour des comptes utilisateur tels que admin ou Administrator :

1
root@dc1:~# samba-tool domain exportkeytab ~/administrator.keytab --principal=Administrator@AC-TEST.FR
2
Export one principal to admin.keytab
3
root@dc1:~# kinit Administrator@AC-TEST.FR -k -t ~/administrator.keytab 
4
root@dc1:~# kdestroy
5
root@dc1:~# rm -f ~/administrator.keytab 

Gestion des sites

Sur le contrôleur de domaine principal, la déclaration d'un site s'effectue facilement grâce à la fonction bash samba_update_site :

1
. /usr/lib/eole/samba4.sh 
2
samba_update_site monsite 10.1.1.0/24

Recherche avancée

La commande ldbsearch permet d'effectuer des recherches dans l'annuaire Active Directory :

  • Initialisation de la variable LDB_URL, utilisée par la commande ldbsearch.

    export LDB_URL=/var/lib/samba/private/sam.ldb

  • Rechercher les utilisateurs

    ldbsearch -S '(objectclass=user)' cn

  • Afficher l'entrée d'un utilisateur

    ldbsearch cn=admin

  • Afficher l'entrée correspondant au groupe Administrators

    ldbsearch '(&(objectclass=group)(cn=Administrators))' --cross-ncs

  • Afficher les entrées correspondant aux contrôleurs de domaine

    ldbsearch '(invocationId=*)' --cross-ncs objectguid

Truc & astuce

Les commandes ldbadd, ldbmodify et ldbdel permettent également de modifier l'annuaire Active Directory à l'aide d'instructions au format LDIF[2].

ExempleAjouter une OU (Unité Organisationnelle) :

Générer le fichier ajouterOU.ldif :

1
dn: OU=etablissement1,DC=ac-test,DC=fr
2
changetype: add
3
objectClass: top
4
objectClass: organizationalunit

Ajouter la modification dans l'annuaire :

ldbadd ajouterOU.ldif