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.
quelle
Antworten:
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:
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:
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 .
quelle
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
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.
quelle