Wie erteile ich einem Domänenbenutzer die Berechtigung zum Starten und Beenden eines Tomcat-Dienstes?

7

Mir ist klar, dass dies fast identisch mit dieser Frage ist, aber der große Unterschied besteht darin, dass die im MSKB-Artikel beschriebenen Methoden für installierte Tomcat-Dienste NICHT funktionieren. Sie funktionieren für einfache Windows-Dienste, jedoch nicht für die Tomcat-Dienste, die wir steuern müssen.

Irgendwelche weiteren Ideen?

Bearbeiten (Details): Wenn ich über 100 Tomcat-Containerdienste verfüge, muss ich diese Berechtigung für die Gruppe für jeden Dienst explizit erteilen? Gibt es eine Möglichkeit, eine DOMAIN-Gruppe so einzurichten, dass sie die Berechtigung zum Stoppen / Starten von 100 verschiedenen Tomcat-Diensten auf 15 Computern hat?

Bearbeiten (weitere Informationen): Wir verwenden Ant sshexec (jsch) und erhalten die Zugriffsstufe 5 verweigert, wenn net stop service_name aufgerufen wird.

Fertigsuppe
quelle
Siehe auch ähnliche stackoverflow.com/questions/4436558/… mit mehr Optionen
Vadzim

Antworten:

7

Ich bin mir nicht sicher, was Sie zuvor versucht haben, aber hier ist, was ich gerade getan habe und Erfolg hatte:

1) Laden Sie das Windows Service-Installationsprogramm für Tomcat 5.5.27 herunter und installieren Sie es.

2) Den Sicherheitsdeskriptor des TomCat5-Dienstes mit "sc sdshow tomcat5" ausgegeben, der mir Folgendes zeigte:

D:(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWLOCRRC;;;AU)(A;;CCLCSWRPWPDTLOCRRC;;;PU)

Dies ist eine ziemlich häufige Sicherheitsbeschreibung für Dienste. Ich habe es wörtlich auf einigen Microsoft-Diensten gesehen. Das SYSTEM und die integrierten Administratoren haben "volle Kontrolle", "Hauptbenutzer" können den Dienst stoppen, starten und anhalten, und "Authentifizierte Benutzer" können Eigenschaften des Dienstes abfragen (ich beschönige hier etwas).

3) Ich habe einen eingeschränkten Benutzer namens "bob" auf meiner Box erstellt, eine "RUNAS" -Befehlsaufforderung als er geöffnet und seine SID von "WHOAMI / ALL" erhalten (ein Befehl, der unter Windows Server 2003, aber nicht unter XP ausgeführt wird. Ich weiß nichts über Vista und Windows 7. Ich habe überprüft, dass Bob den Tomcat-Dienst nicht stoppen / starten konnte (mit "NET STOP tomcat5"). Ich habe den gleichen Fehler erhalten, den Sie in Ihrem Beitrag gemeldet haben.

4) Führen Sie an meiner regulären Administrator-Eingabeaufforderung Folgendes aus:

sc sdset tomcat5 D:(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWLOCRRC;;;AU)(A;;CCLCSWRPWPDTLOCRRC;;;PU)(A;;RPWPDT;;;S-1-5-21-1409082233-484763869-854245398-1009)

Diese SDDL-Zeichenfolge gibt Bobs SID (S-1-5-21-1409082233-484763869-854245398-1009) Rechte zum Stoppen, Starten und Anhalten des Dienstes (RP, WP bzw. DT).

5) Ich kehrte zu meiner Eingabeaufforderung "Bob" zurück und verifizierte, dass ich den Dienst jetzt mit NET STOP und NET START stoppen und starten konnte.

Ich würde empfehlen, eine Gruppe zu erstellen, um dieses Recht zu entziehen, einen Benutzer in diese Gruppe aufzunehmen, die SID der Gruppe abzurufen (mit WHOAMI oder einem anderen Tool) und den Sicherheitsdeskriptor auf diese Weise zu ändern.

Ich würde denken, dass die Verwendung von Gruppenrichtlinien zum Ändern des Sicherheitsdeskriptors gut funktionieren würde. Ich habe Fälle gesehen, in denen einige Dienste die Standardberechtigung, die eine gruppenrichtlinienbasierte Änderung für einen Dienst erteilt, nicht mögen (siehe diesen Beitrag zum Windows-Suchdienst, wenn Sie sehen möchten, wovon ich spreche: http: / /peeved.org/blog/2007/12/07 ), aber das war meiner Erfahrung nach ungewöhnlich.

Weitere Informationen zu Sicherheitsbeschreibungen für Dienste finden Sie unter http://msmvps.com/blogs/alunj/archive/2006/02/13/83472.aspx und http://support.microsoft.com/kb / 914392 .

Evan Anderson
quelle
Wenn ich über 100 Tomcat-Containerservices verfüge, muss ich diese Berechtigung für die Gruppe für jeden Service explizit erteilen? Gibt es eine Möglichkeit, eine DOMAIN-Gruppe so einzurichten, dass sie die Berechtigung zum Stoppen / Starten von 100 verschiedenen Tomcat-Diensten auf 15 Computern hat?
Instantsoup
Sie müssen es auf alle 100 Dienstinstanzen einstellen, aber Sie können das definitiv skripten. Sie können die SID einer Domänengruppe im Sicherheitsdeskriptor absolut benennen. Das klingt eigentlich ziemlich einfach, da Sie von einer einzelnen Gruppe sprechen und somit eine einzige Sicherheitsbeschreibung für alle 100 Dienste festgelegt werden muss. Am schwierigsten ist es, zunächst diese Liste mit 100 Diensten zu erstellen. Hoffentlich haben Sie bereits alle Namen irgendwo in einer Datei. Sie sollten in der Lage sein, diese Liste zu durchlaufen, sobald Sie einen getesteten und funktionierenden Sicherheitsdeskriptor haben. Sinn ergeben?
Evan Anderson
Mit 100 zu erledigenden Diensten ist es wahrscheinlich einfacher, den Befehl "sc sdset" zu skripten, als dies mit Gruppenrichtlinien zu tun wäre. Sie können auf allen 15 Computern dasselbe Skript ausführen, und alle Dienste, die auf einem bestimmten Computer nicht vorhanden sind, werden einfach ignoriert. Sie können das Skript beibehalten und auf neuen Computern ausführen / neue Dienste hinzufügen / usw.
Evan Anderson
Es gibt also keinen Einstiegspunkt, um alle Dienste ähnlich zu gestalten, sodass wir dem einen Benutzer die Berechtigung für alle domänenweit erteilen können. Schade. Ich werde diese Antwort in ein paar Tagen akzeptieren, es sei denn, jemand kann mich glücklicher machen!
Instantsoup
Ich bin mir nicht sicher, was du mit "Einstiegspunkt" meinst. Jeder Dienst verfügt über eine eigene Sicherheitsbeschreibung. Sie "erben" nicht von irgendeiner Art von "übergeordnetem" Sicherheitsdeskriptor. Microsoft hat es einfach nicht so entworfen. Sie können den Benutzer zu einem Mitglied von "Hauptbenutzern" oder "Administratoren" machen und sie haben das Recht, fast jeden Dienst (einschließlich Ihrer Tomcat-Instanzen) zu stoppen / zu starten, da die Standard-Sicherheitsbeschreibung für jeden Dienst, den ich jemals gesehen habe, Namen enthält. " Hauptbenutzer "und" Administratoren ".
Evan Anderson
1

Sie können einen Windows Scheduler-Job einrichten, um den Befehl auszuführen. Ein Scheduler-Job kann so eingerichtet werden, dass ein Befehl unter den Anmeldeinformationen eines anderen Benutzers ausgeführt wird. Sie können dann die Sicherheit für den Job so einstellen, dass nur eine bestimmte Gruppe von Benutzern ihn ausführen kann.

Sie benötigen Administratorrechte, um die geplante Aufgabe zu erstellen, können dann aber anderen Personen Rechte zum Ausführen der Aufgabe erteilen. Obwohl es sich um eine geplante Aufgabe handelt, können Sie sie so einstellen, dass sie nur bei Bedarf ausgeführt wird.

Angenommen, Sie erstellen einen Job (öffnen Sie Systemsteuerung> Geplante Aufgaben, klicken Sie mit der rechten Maustaste und wählen Sie Neu> Geplante Aufgabe) mit dem Namen StartTomcat

Gehen Sie zur Registerkarte "Aufgabe".

Stellen Sie die Werte "Ausführen" und "Start in" auf die Befehlszeile ein, mit der Tomcat gestartet wird. Stellen Sie außerdem die Zeile "Ausführen als" als Benutzer ein, der Tomcat starten und stoppen darf, und klicken Sie auf die Schaltfläche "Kennwort festlegen ...", um das Kennwort des Benutzers anzugeben. Schließlich entfernen Sie das Häkchen aus dem Kontrollkästchen Aktiviert, da Sie nur den Job auf Nachfrage ausgeführt werden sollen.

Gehen Sie dann zur Registerkarte "Sicherheit".
Fügen Sie die Personen hinzu, die Sie zum Ausführen der Aufgabe zulassen möchten, und erteilen Sie ihnen nur die Berechtigungen "Lesen und Ausführen" für die Aufgabe.

Erstellen Sie abschließend eine Batchdatei, um die Aufgabe auszuführen. Die Batch-Datei enthält die folgende Zeile:

   schtasks / run / tn StartTomcat

Platzieren Sie die Batchdatei an einem Ort, auf den die Benutzer zugreifen können, die sie ausführen müssen. Es ist möglicherweise sogar möglich, die Batchdatei auf einem separaten Computer abzulegen, Sie benötigen jedoch einige zusätzliche Parameter für die Zeile schtasks. Sie können diese Parameter in der Windows-Hilfe nachschlagen.


quelle
Ich habe dies nicht getestet, aber es klingt wie die sauberste Lösung.
Ian Boyd
1
"Am saubersten"? Phhh ... das ist albern. Auf dem Poster steht, dass er 100 Instanzen zum Starten / Stoppen hat. Bei dieser Methode müssen also 100 "Geplante Aufgaben" erstellt werden. Durch einfaches Ändern der Sicherheitsbeschreibungen für die Dienste können die delegierten Benutzer die Standard-Windows-Dienststeuerungstools zum Stoppen / Starten der Dienste verwenden. Was könnte "sauberer" sein als das? Dies ist ein zwielichtiger Hack.
Evan Anderson
0

Sie müssen herausfinden, was diese Tomcat-Dienste so besonders macht, dass die normalen Methoden zur Steuerung in Windows nicht funktionieren. Wie funktionieren sie nicht? Ist es einfach ein Problem, bei dem der Zugriff verweigert wird? In diesem Fall wäre ProcMon äußerst nützlich, um herauszufinden, wo der Zugriff gewährt werden muss.

Ryan Bolger
quelle