Question Comment autoriser un utilisateur de domaine à démarrer et à arrêter un service Tomcat?


Je réalise que c'est presque identique à cette question mais la grande différence est que les méthodes décrites dans l'article de la MSKB NE FONCTIONNENT PAS pour les services Tomcat installés. Ils fonctionnent pour des services Windows simples, mais pas pour les services Tomcat que nous devons contrôler.

Des idées supplémentaires?

Modifier (détails): Si j'ai 100 services de conteneur Tomcat, dois-je accorder explicitement cette autorisation au groupe pour chaque service? Existe-t-il un moyen de configurer un groupe DOMAIN afin d’avoir l’autorisation d’arrêter / démarrer 100 services Tomcat différents sur 15 machines?

Edit (plus d'infos): Nous utilisons Ant sshexec (jsch) et obtenons un niveau d'erreur d'accès refusé 5 lors de l'appel de net stop nom_service.


7
2018-05-29 20:57


origine


Voir aussi similaire stackoverflow.com/questions/4436558/… avec plus d'options - Vadzim


Réponses:


Je ne suis pas sûr de ce que vous avez essayé de faire auparavant, mais voici ce que je viens de faire et que j'ai eu du succès:

1) Téléchargé le programme d’installation du service Windows de Tomcat 5.5.27 et l’installé.

2) Déchargé le descripteur de sécurité de service TomCat5 à l’aide de "sc sdshow tomcat5", ce qui m’a montré:

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

C'est un descripteur de sécurité assez commun pour les services. Je l'ai vu textuellement sur certains services Microsoft. Le système et les administrateurs intégrés ont un "contrôle total", les "utilisateurs privilégiés" peuvent arrêter, démarrer et mettre en pause le service, et les "utilisateurs authentifiés" peuvent interroger les propriétés du service (je passe un instant sur ici).

3) J'ai créé un utilisateur limité appelé "bob" sur ma boîte, ouvert une invite de commande "RUNAS" comme lui et obtenu son SID de "WHOAMI / ALL" (commande exécutée sous Windows Server 2003 mais pas sous XP). Je ne connais pas Vista et Windows 7 par coeur). J'ai vérifié que Bob ne pouvait pas arrêter / démarrer le service Tomcat (en utilisant "NET STOP tomcat5"). J'ai reçu la même erreur que vous signalez dans votre message.

4) À partir de mon invite de commande d'administrateur habituel, exécutez les opérations suivantes:

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)

Cette chaîne SDDL donne les droits SID de Bob (S-1-5-21-1409082233-484763869-854245398-1009) pour arrêter, démarrer et mettre en pause le service (RP, WP et DT, respectivement).

5) Je suis retourné à l'invite de commande "Bob" et vérifié que je pouvais maintenant arrêter et démarrer le service à l'aide de NET STOP et NET START.

Je recommanderais de créer un groupe auquel déléguer ce droit, de placer un utilisateur dans ce groupe, d'obtenir le SID du groupe (à l'aide de WHOAMI ou de tout autre outil) et de modifier le descripteur de sécurité de cette façon.

Je pense que l’utilisation de la stratégie de groupe pour modifier le descripteur de sécurité fonctionnerait correctement. J'ai vu des cas où certains services n'apprécient pas l'autorisation par défaut qu'une modification basée sur une stratégie de groupe attribue à un service (consultez cette publication sur le service Windows Search si vous souhaitez savoir de quoi je parle: http://peeved.org/blog/2007/12/07), mais cela a été rare dans mon expérience.

Si vous voulez plus d'informations sur les descripteurs de sécurité pour les services, consultez http://msmvps.com/blogs/alunj/archive/2006/02/13/83472.aspx et http://support.microsoft.com/kb/914392.


7
2018-06-02 14:56



Si j'ai 100 services de conteneur Tomcat, dois-je accorder explicitement cette autorisation au groupe pour chaque service? Existe-t-il un moyen de configurer un groupe DOMAIN afin d’avoir l’autorisation d’arrêter / démarrer 100 services Tomcat différents sur 15 machines? - Instantsoup
Vous devrez le configurer sur toutes les 100 instances de service, mais vous pouvez certainement le scripter. Vous pouvez absolument nommer le SID d'un groupe de domaine dans le descripteur de sécurité. Cela semble en fait assez facile, puisque vous parlez d'un seul groupe, et donc d'un seul descripteur de sécurité à définir sur les 100 services. Le plus difficile sera de construire cette liste de 100 services au départ. J'espère que vous avez déjà tous leurs noms dans un fichier quelque part. Vous devriez pouvoir parcourir cette liste une fois que vous avez un descripteur de sécurité testé et fonctionnel. Avoir un sens? - Evan Anderson
En fait, avec 100 services à faire, il est probablement plus facile de scripter la commande "sc sdset" que de le faire avec une stratégie de groupe. Vous pouvez exécuter le même script sur les 15 ordinateurs. Les services qui n'existent pas sur un ordinateur donné seront simplement ignorés. Vous pouvez conserver le script et l'exécuter sur de nouvelles machines / y ajouter de nouveaux services / etc. - Evan Anderson
Il n’existe donc aucun point d’entrée permettant de rendre tous les services similaires, de sorte que nous pouvons accorder l’autorisation utilisateur unique à tous les domaines. Bummer. J'accepterai cette réponse dans quelques jours à moins que quelqu'un puisse me rendre plus heureux! - Instantsoup
Je ne suis pas sûr de ce que vous entendez par "point d'entrée". Chaque service a son propre descripteur de sécurité. Ils ne "héritent" d'aucun type de descripteur de sécurité "parent". Microsoft ne l’a pas conçu de cette façon. Vous pouvez définir l'utilisateur comme membre de "Utilisateurs privilégiés" ou d '"Administrateurs". Ils disposeront des droits nécessaires pour arrêter / démarrer la plupart des services (y compris vos instances Tomcat), car le descripteur de sécurité par défaut de chaque service que j'ai jamais vu se nomme " Utilisateurs avec pouvoir "et" Administrateurs ". - Evan Anderson


Vous pouvez configurer un travail du planificateur Windows pour exécuter la commande. Un travail de planificateur peut être configuré pour exécuter une commande avec les informations d'identification d'un autre utilisateur. Vous pouvez ensuite définir la sécurité du travail de sorte que seul un certain nombre d'utilisateurs puisse l'exécuter.

Vous aurez besoin de droits d’administrateur pour créer la tâche planifiée, mais vous pourrez ensuite donner aux autres personnes le droit de l’exécuter. Même s'il s'agit d'une tâche planifiée, vous pouvez la configurer pour qu'elle s'exécute uniquement à la demande.

Par exemple, supposons que vous créez un travail (ouvrez le Panneau de configuration> Tâches planifiées, puis cliquez avec le bouton droit de la souris et choisissez Nouveau> Tâche planifiée) appelé:   StartTomcat

Allez dans l'onglet "Tâche".

Définissez les valeurs "Exécuter" et "Démarrer dans" sur la ligne de commande qui démarre Tomcat. Définissez également la ligne "Exécuter en tant que" comme étant un utilisateur autorisé à démarrer et arrêter Tomcat, puis cliquez sur le bouton "Définir le mot de passe ..." pour fournir le mot de passe de l'utilisateur. Finalement, retirer cocher la case Activé, car vous souhaitez uniquement exécuter le travail à la demande.

Ensuite, allez dans l'onglet "Sécurité".
Ajoutez les personnes que vous souhaitez autoriser à exécuter la tâche et accordez-les. seulement Autorisations "Lecture et exécution" sur la tâche.

Enfin, créez un fichier de commandes pour exécuter la tâche. Le fichier de commandes contiendra la ligne:

schtasks / run / tn StartTomcat

Placez le fichier de commandes dans un endroit accessible aux utilisateurs qui en ont besoin. Il pourrait même être possible de placer le fichier de commandes sur une machine distincte, mais vous aurez besoin de quelques paramètres supplémentaires pour la ligne schtasks. Vous pouvez rechercher ces paramètres dans l'aide de Windows.


1
2018-06-02 15:33



Je n'ai pas testé cela, mais cela ressemble à la solution la plus propre. - Ian Boyd
"Le plus propre"? Phhh ... c'est idiot. Le poster indique qu'il doit démarrer / arrêter 100 instances. Cette méthode implique donc la création de 100 "tâches planifiées". La simple modification des descripteurs de sécurité sur les services permettra aux utilisateurs délégués d’utiliser les outils de contrôle de service Windows standard pour arrêter / démarrer les services. Qu'est-ce qui pourrait être "plus propre" que ça? C'est un bidon louche. - Evan Anderson


Vous devez découvrir ce qui rend ces services Tomcat si spéciaux que les méthodes habituelles de contrôle de ces services sous Windows ne fonctionnent pas. Comment fonctionnent-ils? Est-ce simplement un problème d'accès refusé? Si c'est le cas, ProcMon serait très utile pour déterminer précisément où l'accès doit être accordé.


0
2018-05-29 21:23