Utiliser Debian et dérivées

Linux Mint : Adhérer un système Linux Mint à un domaine Active Directory

Table des matières

mint_ad
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 :

mint-ad_windows_ueto_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


On peut utiliser la commande suivante :
Code BASH :
pam-auth-update

Et cocher Create home directory on login, mais c'est moins scriptable...


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 :

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.

mint-ad_lightdm



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]

Si on a configuré précédemment sssd pour que le nom pleinement qualifié ne soit pas utilisé, on saisira uniquement le nom d'utilisateur, sans le @linuxtrickstest.lan

Une fois connecté, le dossier utilisateur est créé et on peut utiliser notre système :

mint-ad_session-ouverte



Par défaut, tous les utiliateurs peuvent se connecter mais n'ont pas les droits de super utilisateur et ne peuvent pas utiliser la commande sudo.

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


Si on a configuré précédemment sssd pour que le nom pleinement qualifié ne soit pas utilisé, on devra saisir uniquement le nom du groupe, sans le @linuxtrickstest.lan

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 !
Cette page a été vue 1348 fois