web-dev-qa-db-fra.com

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

Je configure un serveur Ubuntu 11.04 VM pour l'utiliser comme serveur de base de données. Cela faciliterait la vie de tout le monde si nous pouvions permettre aux gens de se connecter à l'aide des informations d'identification Windows et peut-être même de faire en sorte que la machine fonctionne avec la sécurité actuelle, gérée par AD, que nous avons ailleurs.

La première étape était très facile à accomplir - apt-get install likewise-open et j'étais plutôt en affaires. Le problème que je rencontre est de faire entrer nos administrateurs dans les groupes sudoers - je n'arrive apparemment pas à obtenir quoi que ce soit. J'ai essayé:

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

Aucun de ces éléments ne semble prendre, on me dit tout de même que "DOMAINE\utilisateur n'est pas dans le fichier sudoers. Cet incident sera signalé."

Alors, comment puis-je ajouter des utilisateurs non locaux aux sudoers?

10
Wyatt Barnett

Je rencontre ce problème et voici ma solution:

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

Vérifiez d'abord l'utilisateur en utilisant 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 passwd et gid NUMBERS ne fonctionnent pas pour moi. DOMAIN\\domain^users fonctionne pour moi

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

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

SMB\\<aduser01> ALL=(ALL) ALL
6
Jao Madn

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

neighter le

%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.

2
user387622

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 travaillaient pas pour moi - du tout

Au lieu de cela, je voulais quelque chose qui

  • met en cache les identifiants et l'accès Sudo
  • est géré de manière centralisée

La solution actuelle 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 auprès d'AD et en conserve un cache local. Les règles Sudo sont ensuite stockées dans des objets AD, où vous pouvez limiter les règles aux ordinateurs, aux utilisateurs et aux commandes, sans même 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 vous aider avec 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 nommage Schema et recherchez la classe sudoRole.

Créez maintenant l'unité d'organisation sudoers à la racine de votre domaine. Cette unité d'organisation conservera tous les paramètres Sudo de 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 tilisateurs et ordinateurs Active Directory pour le modifier.

Supposons que j'ai un ordinateur nommé foo32linux, un utilisateur appelé stewie.griffin et que je souhaite le laisser exécuter toutes les commandes avec Sudo sur cette composition. Dans ce cas, je crée un objet sudoRole sous l'OU sudoers. Pour le sudoRole, vous pouvez utiliser le nom de votre choix - je m'en tiens au nom de l'ordinateur puisque j'utilise des règles par ordinateur. Maintenant, définissez ses attributs comme suit:

  • sudoHost: foo32linux
  • sudoCommand: ALL
  • sudoUser: stewie.griffin

Pour les commandes, vous pouvez également utiliser des entrées spécifiques, telles que / 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. Puis connectez-vous avec l'utilisateur AD et vérifiez:

Sudo -l

Il devrait répertorier toutes les entrées associées que vous avez ajoutées à cet utilisateur et à cet ordinateur. Peasy facile!

2
bviktor

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

http://www.mail-archive.com/[email protected]/msg00572.html

Il vous demande en gros de modifier votre fichier /etc/sudoers 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 limiter l'utilisateur, vous pouvez le faire aussi. Mais il vous avertit que vous devez vous assurer de connaître le nom de l'utilisateur sur le système Linux en utilisant la commande getend passwd comme indiqué.

1

J'utilise la commande commune

Sudo usermod -a -G Sudo DOMAIN\username 

et remplacez DOMAIN\user par DOMAIN\\\username.

0
Paramanand Dubey

Utilisation de Centify direct J'ai ajouté un utilisateur de domaine dans le fichier/etc/sudoers.

(Utilisateur du domaine) ALL = (ALL) ALL

0
user160720