Linux Mint : Adhérer un système Linux Mint à un domaine Active Directory
Table des matières
Le domaine Windows Active Directory tourne sur Windows Server 2019 et le niveau fonctionnel est Windows 2016.
Le but final est de pouvoir se connecter sur notre système Linux grâce aux comptes présents dans l'annuaire de Microsoft.
Il n'est pas possible d'adhérer un système Linux Mint à un domaine Active Directory dès l'installation et la distribution ne propose pas d'outil pour le faire.
Nous allons devoir réaliser ces actions en ligne de commande et beaucoup d'actions manuelles seront à faire.
Ici le domaine utilisé pour cette partie en ligne de commande est linuxtrickstest.lan.
Toutes les commandes sont réalisées avec les droits root. Afin d'éviter de mettre des sudo partout, on ouvre un shell en root :
Dans un premier temps, installer les paquets suivants
Les paquets installés permettent de contacter l'annuaire LDAP, prendre en charge Kerberos, et des outils pour effectuer des actions sur l'AD.
Il faut aussi s'assurer que :
- le DNS est configuré, et pointe bien sur le contrôleur de domaine.
- le nom d'hôte est défini
Pour tester la résolution du nom de domaine, on peut tester de le pinguer :
On va ajouter notre système au domaine via la commande realm :
Le mot de passe du compte AD est demandé.
Le compte AD utilisé doit posséder les droits de faire adhérer des machines au domaine.
Les fichiers /etc/sssd/sssd.conf , /etc/krb.conf et /etc/krb5.keytab seront configurés au petits oignons grâce à la commande ci-dessus.
Pour vérifier que tout est bon, on peut taper la commande suivante :
On voit ici qu'on est bien dans le domaine.
On peut constater que notre Linux Mint est bien dans l'AD :
Pour vérifier les comptes qui peuvent se connecter à ce système on peut utiliser la commande id :
On peut observer les groupes de l'utilisateur concerné.
Remarquez que pour se connecter au domaine, il faut en effet saisir le nom de l'utilisateur suivi de l'arobase et du domaine.
Bien que le paquet oddjob-mkhomedir soit installé, PAM n'est pas configuré pour lancer la création du dossier personnel.
On va éditer le fichier /etc/pam.d/common-session :
On va ajouter cette ligne juste en dessous de session required pam_unix.so :
Cette étape n'est pas obligatoire. Cependant, si vous voulez éviter de vous connecter avec un login complet du style :
et n'utiliser que
On peut changer ce comportement en modifiant le fichier /etc/sssd/sssd.conf.
Par défaut :
On modifie en :
Si on souhaite prendre en compte le nouveau fichier de configuration de sssd il faut redémarrer le service :
Maintenant on vérifie que ça fonctionne avec un compte simple :
Linux Mint utilise LightDM comme gestionnaire de connexion.
Le problème est que ce gestionnaire n'afiiche que les comptes locaux et ne permet pas de saisir manuellement le nom de l'utilisateur.
Pour cela, on va créer un fichier de configuration :
Et y insérer ceci :
Cela nous permettra d'avoir le même genre d'écran de connexion que sous Windows, avec l'obligation de saisir le nom d'utilisateur.
On peut redémarrer le système pour que tous les services se relancent correctement.
Pour se connecter :
Utiliser le mot de passe du compte Active Directory.
En graphique, sur l'écran de connexion LightDM, on saisi dans le champ utilisateur : [email protected]
Une fois connecté, le dossier utilisateur est créé et on peut utiliser notre système :
On souhaite retirer la Linux Mint du domaine, on utilisera la commande :
La machine sera retirée de l'AD et les fichiers de config sur la Linux Mint seront remis à leur valeur par défaut.
Il faut ensuite penser à retirer les éventuelles configurations additionnelles de lightdm :
Et retirer la ligne ajoutée dans /etc/pam.d/common-session :
Supprimer :
Il suffit de créer un groupe de domaine local sur le domaine AD qui s'appelle par exemple GDL-SUDOERS. (on pourra créer un groupe par serveur si on veut plus de granularité, à adapter en fonction de votre cas d'usage)
On y ajoute les utilisateurs qui ont besoin d'avoir accès à la commande sudo.
Ensuite sur le système on configure sudo :
Ensuite, on ajoute une une ligne de ce type :
Le mot de passe demandé lors de l'exécution de sudo sera bien entendu celui de votre compte AD.
Il est possible d'utiliser un groupe par défaut déjà présent dans Active Directory.
Si vous avez un nom de groupe avec des espaces, on échappe les espaces avec l'antislash :
Pour les applications graphiques demandant une élévation de privilèges (à travers PolKit), par défaut, c'est le mot de passe du compte local qui vous est demandé.
Pour que ce soit le mot de passe du compte actuellement connecté on pourra faire une règle générique :
Et y insérer cette règle (exemple avec mon gdl-sudoers sans le domaine) :
Après l'ajout de cette règle, on redémarre polkit :
Certaines applications demanderont peut être plusieurs fois le mot de passe, car une élévation est demandée à chaque fois.
Je n'ai à ce jour pas d'autres solutions que de copier les règles de /usr/share/polkit-1/rules.d/ et de les adapter en remplaçant les modifs :
par
Je déconseille fortement d'utiliser polkit.Result.YES à la place de polkit.Result.AUTH_SELF car la demande de mot de passe ne sera jamais formulée !
- Introduction
- Préparer le système
- Joindre le système au domaine Windows
- Paramétrer la création automatique du dossier personnel
- Paramétrer sssd pour ne pas utiliser le nom pleinement qualifié
- Paramétage LightDM
- Connexion avec son compte LDAP
- Quitter le domaine
- Configurer des groupes comme sudoers
- A propos de Polkit
Cet article a été testé avec Linux Mint 22
Introduction
Le domaine Windows Active Directory tourne sur Windows Server 2019 et le niveau fonctionnel est Windows 2016.
Le but final est de pouvoir se connecter sur notre système Linux grâce aux comptes présents dans l'annuaire de Microsoft.
Il n'est pas possible d'adhérer un système Linux Mint à un domaine Active Directory dès l'installation et la distribution ne propose pas d'outil pour le faire.
Nous allons devoir réaliser ces actions en ligne de commande et beaucoup d'actions manuelles seront à faire.
Ici le domaine utilisé pour cette partie en ligne de commande est linuxtrickstest.lan.
Toutes les commandes sont réalisées avec les droits root. Afin d'éviter de mettre des sudo partout, on ouvre un shell en root :
Code BASH :
sudo -i
Préparer le système
Dans un premier temps, installer les paquets suivants
Code BASH :
apt install sssd sssd-tools libnss-sss libpam-sss realmd oddjob oddjob-mkhomedir adcli samba-common-bin
Les paquets installés permettent de contacter l'annuaire LDAP, prendre en charge Kerberos, et des outils pour effectuer des actions sur l'AD.
Il faut aussi s'assurer que :
- le DNS est configuré, et pointe bien sur le contrôleur de domaine.
- le nom d'hôte est défini
Pour tester la résolution du nom de domaine, on peut tester de le pinguer :
Code BASH :
ping -c 3 linuxtrickstest.lan
Code BASH :
PING linuxtrickstest.lan (192.168.221.1) 56(84) bytes of data. 64 bytes from 192.168.221.1: icmp_seq=1 ttl=128 time=0.237 ms 64 bytes from 192.168.221.1: icmp_seq=2 ttl=128 time=0.321 ms 64 bytes from 192.168.221.1: icmp_seq=3 ttl=128 time=0.468 ms --- linuxtrickstest.lan ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 2023ms rtt min/avg/max/mdev = 0.237/0.342/0.468/0.095 ms
Joindre le système au domaine Windows
On va ajouter notre système au domaine via la commande realm :
Code BASH :
realm join --user=t0.linuxtricks linuxtrickstest.lan
Le mot de passe du compte AD est demandé.
Le compte AD utilisé doit posséder les droits de faire adhérer des machines au domaine.
Code :
Password for t0.linuxtricks:
Les fichiers /etc/sssd/sssd.conf , /etc/krb.conf et /etc/krb5.keytab seront configurés au petits oignons grâce à la commande ci-dessus.
Pour vérifier que tout est bon, on peut taper la commande suivante :
Code BASH :
realm list
On voit ici qu'on est bien dans le domaine.
Code :
linuxtrickstest.lan
type: kerberos
realm-name: LINUXTRICKSTEST.LAN
domain-name: linuxtrickstest.lan
configured: kerberos-member
server-software: active-directory
client-software: sssd
required-package: sssd-tools
required-package: sssd
required-package: libnss-sss
required-package: libpam-sss
required-package: adcli
required-package: samba-common-bin
login-formats: %[email protected]
login-policy: allow-realm-logins
On peut constater que notre Linux Mint est bien dans l'AD :
Pour vérifier les comptes qui peuvent se connecter à ce système on peut utiliser la commande id :
Code BASH :
id adrien.linuxtricks@linuxtrickstest.lan
On peut observer les groupes de l'utilisateur concerné.
Code :
uid=1037001103([email protected]) gid=1037000513(utilisateurs du [email protected]) groupes=1037000513(utilisateurs du [email protected])
Remarquez que pour se connecter au domaine, il faut en effet saisir le nom de l'utilisateur suivi de l'arobase et du domaine.
Paramétrer la création automatique du dossier personnel
Bien que le paquet oddjob-mkhomedir soit installé, PAM n'est pas configuré pour lancer la création du dossier personnel.
On va éditer le fichier /etc/pam.d/common-session :
Code BASH :
nano /etc/pam.d/common-session
On va ajouter cette ligne juste en dessous de session required pam_unix.so :
Code BASH :
session optional pam_mkhomedir.so
Paramétrer sssd pour ne pas utiliser le nom pleinement qualifié
Cette étape n'est pas obligatoire. Cependant, si vous voulez éviter de vous connecter avec un login complet du style :
Code :
et n'utiliser que
Code :
adrien.linuxtricks
On peut changer ce comportement en modifiant le fichier /etc/sssd/sssd.conf.
Par défaut :
Code BASH :
use_fully_qualified_names = True fallback_homedir = /home/%u@%d
On modifie en :
Code BASH :
use_fully_qualified_names = False fallback_homedir = /home/%u
Si on souhaite prendre en compte le nouveau fichier de configuration de sssd il faut redémarrer le service :
Code BASH :
systemctl restart sssd
Maintenant on vérifie que ça fonctionne avec un compte simple :
Code BASH :
id adrien.linuxtricks
Code :
uid=1037001103([email protected]) gid=1037000513(utilisateurs du [email protected]) groupes=1037000513(utilisateurs du [email protected])
Paramétage LightDM
Linux Mint utilise LightDM comme gestionnaire de connexion.
Le problème est que ce gestionnaire n'afiiche que les comptes locaux et ne permet pas de saisir manuellement le nom de l'utilisateur.
Pour cela, on va créer un fichier de configuration :
Code BASH :
nano /etc/lightdm/lightdm.conf.d/99-activedirectory.conf
Et y insérer ceci :
Code TEXT :
[SeatDefaults] greeter-show-manual-login = true greeter-hide-users = true allow-guest = false
Cela nous permettra d'avoir le même genre d'écran de connexion que sous Windows, avec l'obligation de saisir le nom d'utilisateur.
On peut redémarrer le système pour que tous les services se relancent correctement.
Connexion avec son compte LDAP
Pour se connecter :
Code BASH :
su - adrien.linuxtricks@linuxtrickstest.lan
Utiliser le mot de passe du compte Active Directory.
En graphique, sur l'écran de connexion LightDM, on saisi dans le champ utilisateur : [email protected]
Une fois connecté, le dossier utilisateur est créé et on peut utiliser notre système :
Quitter le domaine
On souhaite retirer la Linux Mint du domaine, on utilisera la commande :
Code BASH :
realm leave --user=t0.linuxtrcicks linuxtrickstest.lan
La machine sera retirée de l'AD et les fichiers de config sur la Linux Mint seront remis à leur valeur par défaut.
Il faut ensuite penser à retirer les éventuelles configurations additionnelles de lightdm :
Code BASH :
rm /etc/lightdm/lightdm.conf.d/99-activedirectory.conf
Et retirer la ligne ajoutée dans /etc/pam.d/common-session :
Code BASH :
nano /etc/pam.d/common-session
Supprimer :
Code :
session required pam_mkhomedir.so skel=/etc/skel umask=077
Configurer des groupes comme sudoers
Il suffit de créer un groupe de domaine local sur le domaine AD qui s'appelle par exemple GDL-SUDOERS. (on pourra créer un groupe par serveur si on veut plus de granularité, à adapter en fonction de votre cas d'usage)
On y ajoute les utilisateurs qui ont besoin d'avoir accès à la commande sudo.
Ensuite sur le système on configure sudo :
Code BASH :
visudo
Ensuite, on ajoute une une ligne de ce type :
Code BASH :
%GDL-SUDOERS@linuxtrickstest.lan ALL=(ALL) ALL
Le mot de passe demandé lors de l'exécution de sudo sera bien entendu celui de votre compte AD.
Il est possible d'utiliser un groupe par défaut déjà présent dans Active Directory.
Si vous avez un nom de groupe avec des espaces, on échappe les espaces avec l'antislash :
Code BASH :
%admins\ du\ domaine@linuxtrickstest.lan ALL=(ALL) ALL
A propos de Polkit
Pour les applications graphiques demandant une élévation de privilèges (à travers PolKit), par défaut, c'est le mot de passe du compte local qui vous est demandé.
Pour que ce soit le mot de passe du compte actuellement connecté on pourra faire une règle générique :
Code BASH :
nano /etc/polkit-1/rules.d/90-activedirectory.rules
Et y insérer cette règle (exemple avec mon gdl-sudoers sans le domaine) :
Code JAVASCRIPT :
polkit.addRule(function(action, subject) { if (subject.isInGroup("gdl-sudoers")) { return polkit.Result.AUTH_SELF; } });
Après l'ajout de cette règle, on redémarre polkit :
Code BASH :
systemctl restart polkit
Certaines applications demanderont peut être plusieurs fois le mot de passe, car une élévation est demandée à chaque fois.
Je n'ai à ce jour pas d'autres solutions que de copier les règles de /usr/share/polkit-1/rules.d/ et de les adapter en remplaçant les modifs :
Code JAVASCRIPT :
subject.isInGroup ("wheel")
par
Code JAVASCRIPT :
subject.isInGroup("gdl-sudoers")
Je déconseille fortement d'utiliser polkit.Result.YES à la place de polkit.Result.AUTH_SELF car la demande de mot de passe ne sera jamais formulée !