J'essaie de joindre un Ubuntu 16.04 à un domaine Windows (répertoire actif) en utilisant realmd + sssd. En gros, je suivais ce post qui fonctionnait plutôt bien et j'ai pu rejoindre mon serveur et m'authentifier avec succès en tant qu'utilisateur AD. Cependant, il manque deux éléments dans l'intégration :
- Enregistrer le nom d'hôte du serveur dans DNS
- Utiliser sssd-sudo pour l'autorisation de l'utilisateur
Enregistrer le nom d'hôte du serveur dans DNS
Comme mentionné, j'ai réussi à rejoindre l'AD en utilisantrealm join --user=dpr MYDOMAIN.INT --install=/
:
[email protected] ~ # realm list
mydomain.int
type: kerberos
realm-name: MYDOMAIN.INT
domain-name: mydomain.int
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
Cependant, malgré la réussite de la jointure, mon serveur n'est pas connu des autres machines du domaine utilisant son nom d'hôte ip-172-28-5-174.mydomain.int
. J'ai trouvé cette documentation qui mentionne un dyndns_update
paramètre dans le fichier sssd.conf.
Comme j'utilise realm. La configuration sssd est générée automatiquement en émettant la commande join. Le fichier de configuration généré ressemble à ceci :
[sssd]
domains = mydomain.int
config_file_version = 2
services = nss, pam
[domain/mydomain.int]
ad_domain = mydomain.int
krb5_realm = MYDOMAIN.INT
realmd_tags = manages-system joined-with-adcli
cache_credentials = True
id_provider = ad
krb5_store_password_if_offline = True
default_shell = /bin/bash
ldap_id_mapping = True
use_fully_qualified_names = True
fallback_homedir = /home/%[email protected]%d
access_provider = ad
C'est-à-dire que j'ai en quelque sorte besoin d'ajouter dyndns_update = True
à ce fichier généré. Mais comment ?
Utilisez sssd-sudo pour l'autorisation de l'utilisateur
De plus, je veux que sssd lise ma configuration sudo à partir d'AD. Je pense que cela peut être réalisé en utilisant sssd-sudo mais cela doit également être activé/configuré dans le fichier sssd.conf en ajoutant sudo
aux services sssd et utilisez sudo_provider = ldap
pour mon domaine. Encore une fois, je ne suis pas capable de comprendre comment faire cela avec realm.
Fondamentalement, je veux que mon fichier de configuration généré ressemble à ceci :
[sssd]
domains = mydomain.int
config_file_version = 2
services = nss, pam, sudo
[domain/mydomain.int]
id_provider = ad
access_provider = ad
sudo_provider = ldap
ad_domain = mydomain.int
krb5_realm = MYDOMAIN.INT
realmd_tags = manages-system joined-with-adcli
cache_credentials = True
krb5_store_password_if_offline = True
default_shell = /bin/bash
ldap_id_mapping = True
use_fully_qualified_names = True
fallback_homedir = /home/%[email protected]%d
Des idées sur la façon dont cela peut être réalisé ?
Réponse acceptée :
Si vous souhaitez qu'Active Directory gère les sudoers
, vous devez charger un schéma spécialisé dans AD, puis créer vos règles à l'aide d'un outil comme ADSI Edit. Cette procédure pas à pas a fonctionné pour moi sur Ubuntu 14.04. Les points forts sont :
- Importer
schema.ActiveDirectory
- Créer des règles en suivant la page de manuel sudoers-ldap
- Mettre à jour
etc/nsswitch.conf
pour incluresss
parmi les entrées sur lessudoers =
ligne - Mettre à jour
etc/sssd/sssd.conf
à inclure :sudo
parmi les entrées sur lesservices =
ligne- un
[sudo]
vide section (aucune configuration n'est requise, mais Redhat affirme que cela déclenche la configuration appropriée du support sudo) - une ligne comme
sudo_provider = ad
(la documentation sssd sur pagure.org affirme que le fournisseur sudo est activé par défaut pour ldap, ad et ipa, cela peut donc être facultatif)
Lorsque je répète ce processus pour 16.04 (c'est-à-dire les mêmes règles AD que 14.04), j'ai en fait d'autres problèmes. Apparemment, ce n'est pas rare. Il est possible qu'il y ait un bogue dans la version de sudo incluse dans 16.04.
- En principe, une mise à jour manuelle vers la dernière version devrait résoudre ce problème.
- Le
sudo
normal paquet (passudo-ldap
) est le bon package si vous voulez SSSD (et nonsudo
) pour gérer la connexion ldap. Plus précisément, l'installation desudo-ldap
n'a produit aucun journal danssssd_sudo.log
tandis que lesudo
normal paquet a fait. - Tant que
sssd_sudo
affiche maintenantReturning 2 rules for [<user>@<domain>]
,sudo -l
répond toujours avecSorry, user <user>@<domain> may not run sudo on <host>
il peut donc y avoir d'autres problèmes à résoudre.
Cependant, ma situation n'est peut-être pas typique, car j'ai des problèmes supplémentaires qui ne semblent pas être courants. Par exemple, j'ai eu des problèmes lors de l'exécution de realm join
qui ont été résolus à l'aide des solutions de contournement de cette question de panne de serveur.
Si vous avez trouvé votre chemin ici en raison de problèmes realmd/sssd/sudo dans 16.04, voici quelques autres problèmes signalés qui peuvent être utiles (pas nécessairement directement liés au problème de l'OP) :
- Problème de groupe réseau hôte IPA (plus d'informations sur la liste des utilisateurs free-ipa)
- Il existe un problème connu avec la résolution des dépendances realmd. Comme mentionné dans la discussion, l'installation de packagekit résout pour beaucoup (y compris nous). Il peut y avoir un problème distinct avec la version 16.04.
Nous évaluons 16.04 pour la mise à niveau afin que nous puissions mettre cela en veilleuse, mais j'espère que nos démarches aideront les autres.