IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Scripts/Batch Discussion :

Exécuter script en admin avec compte standard


Sujet :

Scripts/Batch

  1. #1
    Membre habitué
    Profil pro
    Informaticien
    Inscrit en
    Juillet 2007
    Messages
    344
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : Informaticien

    Informations forums :
    Inscription : Juillet 2007
    Messages : 344
    Points : 127
    Points
    127
    Par défaut Exécuter script en admin avec compte standard
    Bonjour,

    Je dois faire un script, qui va vérifier l'état d'un service avant de lancer un programme, si le service est planté alors il le redémarrer et lance le programme.

    Tout fonctionne bien, sauf qu'il faut être admin pour redémarrer le service, et ce script devra être utilisé avec des compte non-admin, y-a-t-il un moyen que le script fonctionne quand on est pas admin?

    Merci d'avance

  2. #2
    Membre habitué
    Profil pro
    Informaticien
    Inscrit en
    Juillet 2007
    Messages
    344
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : Informaticien

    Informations forums :
    Inscription : Juillet 2007
    Messages : 344
    Points : 127
    Points
    127
    Par défaut
    Up?

  3. #3
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Points : 15 060
    Points
    15 060
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par nesswaw Voir le message
    y-a-t-il un moyen que le script fonctionne quand on est pas admin?
    L'exécution du script oui, mais pas l'opération.
    Au cas où consulte ce post.
    Il existe aussi la délégation, par exemple avec un workflow. Mais cela dépend de ton environnement, de tes contraintes,...

  4. #4
    Membre habitué
    Profil pro
    Informaticien
    Inscrit en
    Juillet 2007
    Messages
    344
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : Informaticien

    Informations forums :
    Inscription : Juillet 2007
    Messages : 344
    Points : 127
    Points
    127
    Par défaut
    Bonjour,

    Merci pour votre réponse.

    Donc pas moyen qu'un user non-admin exécute un script en admin? Même avec une config spécial (un programme ou autre?)

    Merci

  5. #5
    Membre confirmé Avatar de pitchalov
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    340
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 340
    Points : 582
    Points
    582
    Par défaut
    Bonjour,

    Vous pouvez utiliser l'utilitaire psexec de sysinternals, qui vous permet de lancer fournir un login / password pour lancer une commande sous un autre compte (à la manière d'un runas).
    Par contre, un login / mot de passe sera visible dans le code du script lancé par des utilisateurs non-administrateur (possibilité d'utiliser AutoIt pour compiler le script et ne plus avoir le mot de passe visible, mais pas infaillible non-plus...)

    Bonne continuation

  6. #6
    Membre émérite
    Avatar de fiftytwo
    Homme Profil pro
    DevOps
    Inscrit en
    Novembre 2009
    Messages
    713
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Pologne

    Informations professionnelles :
    Activité : DevOps

    Informations forums :
    Inscription : Novembre 2009
    Messages : 713
    Points : 2 662
    Points
    2 662
    Par défaut
    Citation Envoyé par pitchalov Voir le message
    Bonjour,

    Vous pouvez utiliser l'utilitaire psexec de sysinternals, qui vous permet de lancer fournir un login / password pour lancer une commande sous un autre compte (à la manière d'un runas).
    Par contre, un login / mot de passe sera visible dans le code du script lancé par des utilisateurs non-administrateur (possibilité d'utiliser AutoIt pour compiler le script et ne plus avoir le mot de passe visible, mais pas infaillible non-plus...)

    Bonne continuation
    et dans une DLL ? ca peux passer ?
    "bye bye !" : Antonio Ferrara , 12 mars 2003 - check also my flight's diary and my flight's reports

  7. #7
    Membre confirmé Avatar de pitchalov
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    340
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 340
    Points : 582
    Points
    582
    Par défaut
    Bonjour,

    Je ne sais pas répondre à cette question, ça dépasse mes connaissances, je vais donc laisser les autres membres se positionner sur ce sujet.
    Sinon, j'ai envie de dire pourquoi pas, il suffit de tester non?

    Du coup n'hésite pas à nous faire part de tes tests et des résultats.

  8. #8
    Membre habitué
    Profil pro
    Informaticien
    Inscrit en
    Juillet 2007
    Messages
    344
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : Informaticien

    Informations forums :
    Inscription : Juillet 2007
    Messages : 344
    Points : 127
    Points
    127
    Par défaut
    Bonjour,

    Merci pour vos réponses.

    @pitchalov: Si on peux découvrir le mot de passe, alors non ce n'est pas une bonne solution pour nous.

    @pitchalov: Dans un DLL? Pouvez-vous détaillé le principe de fonctionnement?

    Merci d'avance

  9. #9
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Points : 15 060
    Points
    15 060
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par nesswaw Voir le message
    @pitchalov: Dans un DLL? Pouvez-vous détaillé le principe de fonctionnement?
    Je me permets de répondre, peu importe le conteneur, le pb reste l'association du compte et le mot de passe dans un fichier.

    Un exemple de délégation qui n'est pas sécurisé :
    Code Powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
     
    # With PowerShell V3, you can specify credentials for a session configuration
     
    #TEST dans une session USER
    $s = New-PSSession -ConfigurationName microsoft.powershell32
    Invoke-Command $s { Start-Service MySvc }
    Remove-PSSession $s
     
    #CONFIGURATION PAR UN ADMIN
    # Go to the plugin configuration and see the new properties
    Push-Location WSMan:\localhost\plugin\microsoft.powershell32
    Get-ChildItem
     
    # Delegate a set of credentials (Admin)
    $cred = Get-Credential
    Set-Item .\RunAsUser $cred
    Restart-Service WinRM
     
     #Change Remoting User Access
    Set-PSSessionConfiguration -Name Microsoft.PowerShell32 -showSecurityDescriptorUI
    #Add user account read+Execute (invoke) 
     
    #EXECUTION PAR UN USER
    # Now see which user the session is using
    $s = New-PSSession -ConfigurationName microsoft.powershell32
    # Start-Service MySvc #-> access denied 
    Invoke-Command $s { Start-Service MySvc } #-> OK
     
    #CONFIGURATION PAR UN ADMIN
    # cleanup
    Clear-Item .\RunAsUser;
    Restart-Service WinRM;
    Pop-Location;
    Remove-PSSession $s

    Ensuite il faut contraindre le runspace où s'exécute la commande 'Start-Service MySvc'.
    Sinon un compte utilisateur a full access via la configuration de session modifiée. La création d'une config dédié est peut être préférable, mais je n'ai pas trop le temps en ce moment de creuser ou de rédiger un tuto sur le sujet. A voir.

    Il faut Powershell v3 et ceci modifie tout de même la config du poste.

    Testé en local avec PS v4 sous Seven.

  10. #10
    Membre chevronné Avatar de Mister Nono
    Homme Profil pro
    Ingénieur Mathématiques et Informatique
    Inscrit en
    Septembre 2002
    Messages
    2 232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur Mathématiques et Informatique
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 232
    Points : 1 894
    Points
    1 894
    Par défaut
    Lancer le script via la stratégie du compte sur le domaine, le fichier script ayant les droits administrateur du domaine.

    Du coup, l'exécution sur un client donnera des droits supérieurs qu'un simple script utilisateur ? A moins que je me trompe...

    A suivre...

    A+
    La connaissance ne sert que si elle est partagée.
    http://ms2i.net

  11. #11
    Membre confirmé Avatar de pitchalov
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    340
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 340
    Points : 582
    Points
    582
    Par défaut
    Bonjour,

    Comme le dit Laurent Dardenne, si un code comprend des login/password en dur, peu importe le conteneur (exe, dll ou autre), et que la compilation est réversible alors le risque est présent.
    La solution de Mister Nono ne me semble pas résoudre le problème, du fait qu'une GPO de type User va lancer un script de connexion avec les droits de l'utilisateur en question, il me semble, à vérifier.

    Après les idées de Laurent Dardenne et de Mister Nono me conduisent à une autre proposition (c'est du bricolage mais bon si ça répond à ton besoin ça pourrait le faire) :
    Tu crée un script qui se lance au démarrage en tant qu'administrateur (par GPO, service, tâche planifiée ou ce que tu veux), et qui va lire en boucle infinie (toutes les 30 sec par exemple) un fichier flag que l'utilisateur va pouvoir modifier/créer pour donner le go au script de lancer ses opérations (et même pourquoi pas au travers d'un script afin d'automatiser les actions).
    Dès lors que ton script voit le flag à "OK", il va lancer la vérification+ relance de service, et repasser le flag en mode "WAIT".

    Ainsi le seul droit de l'utilisateur nécessaire, c'est de créer / modifier un fichier dans une arborescence définie.
    Je sais pas si je me suis fait comprendre.

    En espérant que ça convienne, ou que ça amène d'autres réflexions moins bricole.
    Bonne continuation.

  12. #12
    Membre chevronné Avatar de Mister Nono
    Homme Profil pro
    Ingénieur Mathématiques et Informatique
    Inscrit en
    Septembre 2002
    Messages
    2 232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur Mathématiques et Informatique
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 232
    Points : 1 894
    Points
    1 894
    Par défaut
    A vérifier :

    Dans PSTools de Mark Russinovich, il y a un utilitaire PSExec. Cet utilitaire semble pouvoir lancer des commandes à distance en passant en même temps le password.

    A+
    La connaissance ne sert que si elle est partagée.
    http://ms2i.net

  13. #13
    Membre habitué
    Profil pro
    Informaticien
    Inscrit en
    Juillet 2007
    Messages
    344
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : Informaticien

    Informations forums :
    Inscription : Juillet 2007
    Messages : 344
    Points : 127
    Points
    127
    Par défaut
    Bonjour,

    Non pas GPO je peux pas, car le script se lance au début de la session, je dois pouvoir lancer le script "à la demande" de l'utilisateur

    C'est quand même fou qu'on ne peut pas faire ça "assez facilement" depuis Windows...

    Après investigation, je suis sur une piste en faisant une tâche planifiée, qui se lance avec un user admin, mais j'ai encore plein de soucis, Powershell doit afficher des message à l'utilisateur, mais comme il est pas lancer avec le current user, rien ne s'affiche...

    Il n'existe pas des programmes qui permette de gérer ces genre de cas?

    Merci

  14. #14
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Points : 15 060
    Points
    15 060
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par nesswaw Voir le message
    Après investigation, je suis sur une piste en faisant une tâche planifiée, qui se lance avec un user admin, mais j'ai encore plein de soucis, Powershell doit afficher des message à l'utilisateur, mais comme il est pas lancer avec le current user, rien ne s'affiche...
    Ici ce n'est pas seulement un pb de compte, mais de conception. De plus une tâche planifiée pose un autre problème.
    Citation Envoyé par nesswaw Voir le message
    Il n'existe pas des programmes qui permette de gérer ces genre de cas ?
    i
    Je n'en connais pas. Au cas où, regarde si AutoHotkey peut t'aider.

    En quoi la solution de délégation proposée basée sur PS ne convient pas ?

  15. #15
    Membre chevronné Avatar de Mister Nono
    Homme Profil pro
    Ingénieur Mathématiques et Informatique
    Inscrit en
    Septembre 2002
    Messages
    2 232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur Mathématiques et Informatique
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 232
    Points : 1 894
    Points
    1 894
    Par défaut
    Citation Envoyé par nesswaw Voir le message
    C'est quand même fou qu'on ne peut pas faire ça "assez facilement" depuis Windows...
    Encore Windows.

    Bon courage.
    La connaissance ne sert que si elle est partagée.
    http://ms2i.net

  16. #16
    Membre habitué
    Profil pro
    Informaticien
    Inscrit en
    Juillet 2007
    Messages
    344
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : Informaticien

    Informations forums :
    Inscription : Juillet 2007
    Messages : 344
    Points : 127
    Points
    127
    Par défaut
    Citation Envoyé par Laurent Dardenne Voir le message
    Ici ce n'est pas seulement un pb de compte, mais de conception. De plus une tâche planifiée pose un autre problème.

    Je n'en connais pas. Au cas où, regarde si AutoHotkey peut t'aider.

    En quoi la solution de délégation proposée basée sur PS ne convient pas ?
    Dans votre solution, vous dites que ce n'est pas sécurisé, je ne peut donc pas l'exploiter.

    Une autre piste: Créer un service Windows qui tourne en admin (généralement le compte système) et faire une commande qui va interroger ce service, suivant le status, ce service admin redémarre le service qui doit être redémarrer?

    Merci

  17. #17
    Membre chevronné Avatar de Mister Nono
    Homme Profil pro
    Ingénieur Mathématiques et Informatique
    Inscrit en
    Septembre 2002
    Messages
    2 232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur Mathématiques et Informatique
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 232
    Points : 1 894
    Points
    1 894
    Par défaut
    Citation Envoyé par nesswaw Voir le message
    Dans votre solution, vous dites que ce n'est pas sécurisé, je ne peut donc pas l'exploiter.

    Une autre piste: Créer un service Windows qui tourne en admin (généralement le compte système) et faire une commande qui va interroger ce service, suivant le status, ce service admin redémarre le service qui doit être redémarrer?

    Merci
    Pourquoi faire simple quand on peut faire compliqué ?

    A+
    La connaissance ne sert que si elle est partagée.
    http://ms2i.net

  18. #18
    Membre habitué
    Profil pro
    Informaticien
    Inscrit en
    Juillet 2007
    Messages
    344
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : Informaticien

    Informations forums :
    Inscription : Juillet 2007
    Messages : 344
    Points : 127
    Points
    127
    Par défaut
    Citation Envoyé par Mister Nono Voir le message
    Pourquoi faire simple quand on peut faire compliqué ?

    A+
    Avez-vous une solution simple?

  19. #19
    Membre chevronné Avatar de Mister Nono
    Homme Profil pro
    Ingénieur Mathématiques et Informatique
    Inscrit en
    Septembre 2002
    Messages
    2 232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur Mathématiques et Informatique
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 232
    Points : 1 894
    Points
    1 894
    Par défaut
    Citation Envoyé par nesswaw Voir le message
    Avez-vous une solution simple?
    Oui : LINUX

    A+
    La connaissance ne sert que si elle est partagée.
    http://ms2i.net

  20. #20
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Points : 15 060
    Points
    15 060
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par nesswaw Voir le message
    Dans votre solution, vous dites que ce n'est pas sécurisé, je ne peut donc pas l'exploiter.
    L'exemple donné oui, mais pas l'approche. Il manque à cette exemple le code qui autorise uniquement le traitement de redémarrage du service.
    Il faut le coder...

Discussions similaires

  1. [Batch] lancer Script en admin avec password
    Par Fabdunet13 dans le forum Scripts/Batch
    Réponses: 12
    Dernier message: 07/05/2013, 18h52
  2. Erreur exécution script avec sqlplus
    Par BaronSamdi dans le forum Sql*Plus
    Réponses: 8
    Dernier message: 25/05/2010, 11h23
  3. Exécuter script php avec crontab
    Par Sh4dow49 dans le forum Administration système
    Réponses: 1
    Dernier message: 29/07/2008, 16h49
  4. [SHELL] Problème d'exécution script avec Crontab
    Par Leeloo_Multiboot dans le forum Shell et commandes GNU
    Réponses: 5
    Dernier message: 05/06/2008, 17h59
  5. Réponses: 4
    Dernier message: 30/05/2008, 20h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo