Ajouter un utilisateur de domaine AD à sudoers à partir de la ligne de commande


10

Je configure une machine virtuelle de serveur Ubuntu 11.04 à utiliser comme serveur de base de données. Cela faciliterait la vie de tout le monde si nous pouvions laisser les gens se connecter en utilisant les informations d'identification Windows et peut-être même faire fonctionner la machine avec la sécurité actuelle basée sur AD que nous avons ailleurs.

La première étape a été vraiment facile à accomplir - apt-get install likewise-openet j'étais à peu près dans les affaires. Le problème que j'ai est de faire entrer nos administrateurs dans les groupes sudoers - je n'arrive pas à obtenir quoi que ce soit à prendre. J'ai essayé:

a) usermod -aG sudoers [username]
b) ajouter les noms d'utilisateur dans plusieurs formats (DOMAINE \ utilisateur, utilisateur @ domaine) au fichier sudoers.

Rien de tout cela ne semblait prendre, on me dit toujours "DOMAINE \ l'utilisateur n'est pas dans le fichier sudoers. Cet incident sera signalé."

Alors, comment ajouter des utilisateurs non locaux aux sudoers?

Réponses:


6

Je rencontre ce problème et voici ma solution:

Modifier /etc/sudoers: avec les entrées suivantes

Vérifiez d'abord l'aduser à l'aide de l'ID de commande

#id <AD user>( #id domain\\aduser01 )

Résultats sur le mien:

SMB\aduser01@linux01:~/Desktop$ id smb\\aduser02
uid=914883676(SMB\aduser02) gid=914883073(SMB\domain^users) groups=914883073(SMB\domain^users),1544(BUILTIN\Administrators),1545(BUILTIN\Users),914883072(SMB\domain^admins)

getent passwdet gid NUMBERSne fonctionne pas pour moi. DOMAIN\\domain^userstravaille pour moi

%SMB\\domain^users ALL=(ALL) ALL

comme nous le savons tous, chaque utilisateur AD individuel travaille également

SMB\\<aduser01> ALL=(ALL) ALL

2

nous avons un long nom de domaine avec le suffixe .local,

plus près du

%domainname\\group ALL=(ALL) ALL

ni le

%domainname.local\\group ALL=(ALL) ALL

travaillé...

mais si j'utilise seulement le nom de groupe comme ceci:

%Domain^Admins ALL=(ALL) ALL

Ça marche.


C'était la solution qui a finalement fonctionné. %Domain^Admins ALL=(ALL) ALL
mjp

2

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!


1
Cela peut être long mais, comme les liens deviennent invalides, il est de règle que les parties essentielles soient incluses ici, avec le lien pour référence.
TheWanderer

En fait, j'ai ajouté les parties essentielles, c'est-à-dire le concept. Je pourrais choisir certaines autres parties, mais elles sont inutiles sans le reste et sans comprendre la situation dans son ensemble, donc je ne vois pas le point. Cela ferait plus de mal que de bien.
bviktor

est une règle d'AskUbuntu selon laquelle une personne qui vient doit pouvoir consulter votre réponse et résoudre son problème sans se rendre sur un site externe.
TheWanderer du

1
Ajout d'informations plus pertinentes.
bviktor

1

La meilleure information que j'ai pu trouver sur le sujet est ici:

http://www.mail-archive.com/likewise-open-discuss@lists.likewisesoftware.com/msg00572.html

Il vous demande essentiellement de modifier votre /etc/sudoersfichier avec la configuration correcte pour permettre aux personnes du groupe de votre administrateur sur AD d'avoir accès à tous les privilèges.

Si vous devez être sélectif et restreindre par utilisateur, vous pouvez le faire aussi. Mais il avertit que vous devez vous assurer de savoir quel est le nom de l'utilisateur sur le système Linux en utilisant la getend passwdcommande comme indiqué.


Merci vraiment je n'ai pas pu trouver où chercher. Pour mémoire, le nom d'utilisateur DOMIAN \\ fonctionne pour les particuliers.
Wyatt Barnett

0

En utilisant Centify direct, j'ai ajouté l'utilisateur du domaine dans le fichier / etc / sudoers.

(Utilisateur du domaine) TOUS = (TOUS) TOUS


0

J'utilise la commande commune

sudo usermod -a -G sudo DOMAIN\username 

et remplacer DOMAIN\userpar DOMAIN\\\username.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.