Le problème avec les autres suggestions est que
- ils ne fonctionnent que lorsque vous avez accès au réseau local d'entreprise (ou VPN)
- vous devez maintenir le fichier sudoers sur chaque ordinateur tout le temps
- en prime, ils ne fonctionnaient pas pour moi - pas du tout
Au lieu de cela, je voulais quelque chose qui
- met en cache les informations d'identification et l'accès sudo
- est géré de manière centralisée
La solution réelle utilise SSSD et étend le schéma AD. De cette façon, SSSD récupère périodiquement les paramètres sudo et les informations d'identification de l'utilisateur à partir d'AD et en conserve un cache local. Les règles sudo sont ensuite stockées dans des objets AD, où vous pouvez restreindre les règles aux ordinateurs, utilisateurs et commandes, même - tout cela sans jamais toucher un fichier sudoers sur les postes de travail.
Le tutoriel exact est beaucoup trop long à expliquer ici, mais vous pouvez trouver le guide étape par étape et quelques scripts pour aider à l'automatisation ici:
TL; DR:
UN D
Prenez la dernière version de sudo , récupérez le fichier doc / schema.ActiveDirectory , puis importez-le (assurez-vous de modifier le chemin du domaine en fonction de votre nom de domaine):
ldifde -i -f schema.ActiveDirectory -c "CN=Schema,CN=Configuration,DC=X" "CN=Schema,CN=Configuration,DC=ad,DC=foobar,DC=com" -j .
Vérifiez-le avec ADSI Edit: ouvrez le contexte de dénomination du schéma et recherchez la classe sudoRole .
Créez maintenant l' unité d' organisation sudoers sur la racine de votre domaine, cette unité d'organisation contiendra tous les paramètres sudo pour tous vos postes de travail Linux. Sous cette unité d'organisation, créez un objet sudoRole. Pour créer l'objet sudoRole, vous devez utiliser ADSI Edit, mais une fois créé, vous pouvez utiliser Utilisateurs et ordinateurs Active Directory pour le modifier.
Supposons que j'ai un ordinateur nommé foo32linux , un utilisateur appelé stewie.griffin et que je veux le laisser exécuter toutes les commandes avec sudo sur cette maquette. Dans ce cas, je crée un objet sudoRole sous l' unité d' organisation sudoers . Pour le sudoRole, vous pouvez utiliser n'importe quel nom que vous voulez - je m'en tiens au nom de l'ordinateur car j'utilise des règles par ordinateur. Définissez maintenant ses attributs comme suit:
- sudoHost : foo32linux
- sudoCommand : TOUS
- sudoUser : stewie.griffin
Pour les commandes, vous pouvez également utiliser des entrées spécifiques, comme / bin / less ou autre.
SSSD
Ajoutez à votre /etc/sssd/sssd.conf , au moins:
[sssd]
services = nss, pam, sudo
[domain/AD.FOOBAR.COM]
cache_credentials = True
SSSD actualise son cache local avec les règles mises à jour toutes les quelques heures, mais le moyen le plus simple de le tester consiste simplement à redémarrer l'ordinateur. Connectez-vous ensuite avec l'utilisateur AD et vérifiez:
sudo -l
Il doit répertorier toutes les entrées associées que vous avez ajoutées à cet utilisateur et à cet ordinateur. Peasy facile!
%Domain^Admins ALL=(ALL) ALL