Das Problem mit den anderen Vorschlägen ist das
- Sie funktionieren nur, wenn Sie Zugriff auf das Unternehmens-LAN (oder VPN) haben.
- Sie müssen die sudoers-Datei jederzeit auf jedem Computer verwalten
- Als Bonus haben sie überhaupt nicht für mich gearbeitet
Stattdessen wollte ich etwas, das
- speichert sowohl die Anmeldeinformationen als auch den Sudo-Zugriff zwischen
- wird zentral verwaltet
Die eigentliche Lösung besteht darin, SSSD zu verwenden und das AD-Schema zu erweitern. Auf diese Weise ruft SSSD regelmäßig Sudo-Einstellungen und Benutzeranmeldeinformationen von AD ab und verwaltet einen lokalen Cache davon. Die sudo-Regeln werden dann in AD-Objekten gespeichert, in denen Sie Regeln sogar auf Computer, Benutzer und Befehle beschränken können - ohne jemals eine sudoers-Datei auf den Arbeitsstationen zu berühren.
Das genaue Tutorial ist viel zu lang, um es hier zu erklären. Die Schritt-für-Schritt-Anleitung und einige Skripte zur Unterstützung der Automatisierung finden Sie hier:
TL; DR:
ANZEIGE
Holen Sie sich die neueste Version von sudo , rufen Sie die Datei doc / schema.ActiveDirectory ab und importieren Sie sie (stellen Sie sicher, dass Sie den Domänenpfad entsprechend Ihrem Domänennamen ändern):
ldifde -i -f schema.ActiveDirectory -c "CN=Schema,CN=Configuration,DC=X" "CN=Schema,CN=Configuration,DC=ad,DC=foobar,DC=com" -j .
Überprüfen Sie dies mit ADSI Edit: Öffnen Sie den Schema- Namenskontext und suchen Sie nach der sudoRole- Klasse.
Erstellen Sie nun die sudoers-Organisationseinheit in Ihrem Domänenstamm. Diese Organisationseinheit enthält alle sudo-Einstellungen für alle Ihre Linux-Workstations. Erstellen Sie unter dieser Organisationseinheit ein sudoRole-Objekt. Um das sudoRole-Objekt zu erstellen, müssen Sie ADSI Edit verwenden. Nach dem Erstellen können Sie es jedoch mithilfe von Active Directory-Benutzern und -Computern ändern.
Nehmen wir an, ich habe einen Computer namens foo32linux , einen Benutzer namens stewie.griffin, und ich möchte, dass er alle Befehle mit sudo auf diesem Computer ausführt . In diesem Fall erstelle ich ein sudoRole-Objekt unter der Organisationseinheit sudoers . Für die sudoRole können Sie einen beliebigen Namen verwenden. Ich halte mich an den Computernamen, da ich Regeln pro Computer verwende. Stellen Sie nun die Attribute wie folgt ein:
- sudoHost : foo32linux
- sudoCommand : ALL
- sudoUser : stewie.griffin
Für Befehle können Sie auch bestimmte Einträge verwenden, z. B. / bin / less oder was auch immer.
SSSD
Fügen Sie Ihrer /etc/sssd/sssd.conf mindestens Folgendes hinzu :
[sssd]
services = nss, pam, sudo
[domain/AD.FOOBAR.COM]
cache_credentials = True
SSSD aktualisiert seinen lokalen Cache alle paar Stunden mit den aktualisierten Regeln. Der einfachste Weg, dies zu testen, besteht darin, den Computer einfach neu zu starten. Melden Sie sich dann mit dem AD-Benutzer an und überprüfen Sie:
sudo -l
Es sollte alle zugehörigen Elemente auflisten, die Sie diesem Benutzer und Computer hinzugefügt haben. Kinderleicht!
%Domain^Admins ALL=(ALL) ALL