web-dev-qa-db-fr.com

Autoriser l'utilisateur standard à exécuter le programme en tant qu'administrateur local sans invite d'élévation

Je travaille dans un environnement où les privilèges d'administrateur local pour les utilisateurs ne sont pas autorisés. Du tout. C'est très bien, mais cela peut aussi être pénible lorsque des employés qui doivent avoir des autorisations d'administrateur local pour exécuter un programme ou installer un logiciel qui nécessite des privilèges élevés, ne serait-ce que pour faire l'installation. Il y a un utilisateur dans la comptabilité qui reçoit un DVD mensuel d'un de nos fournisseurs qui contient des rapports bien nécessaires. Pour consulter les rapports et effectuer une sauvegarde, elle doit exécuter l'exécutable sur le DVD. L'exécutable nécessite des privilèges d'administrateur pour l'installation. Donc depuis que je suis ici, chaque mois j'exécute le .exe, UAC apparaît et je fournis les informations indispensables pour exécuter le programme d'installation.

S'il s'agissait d'un programme unique, j'utiliserais le gadget Microsoft Application Compatibility Toolkit pour contourner l'UAC http://www.techrepublic.com/blog/windows-and-office/selectively-disable-uac-for-your -trusted-Vista-applications / Cependant, comme il s'agit d'un nouveau DVD qui lui est envoyé chaque mois, j'ai besoin d'une sorte d'outil qu'elle peut utiliser elle-même pour cette opération.

J'ai regardé autour de Server Fault et j'ai également fait Google-Fu, mais je n'ai rien trouvé d'utile. Je pourrais être l'un d'entre eux dans une situation unique.

Je veux utiliser Poweshell pour fabriquer l'outil. Idéalement, je veux qu'elle puisse mettre le DVD, puis lancer l'outil Poweshell (à partir de son raccourci sur le bureau, sans aucun doute) qui examine le lecteur de DVD et exécute le fichier setup.exe en tant qu'administrateur local sans l'invite UAC, sans qu'elle ait à fournir des informations d'identification.

Ce que j'ai jusqu'à présent, c'est de la camelote reconstituée en ce moment. Je ne suis pas un Jedi Powershell. Je suis un padawan Poweshell. J'ai la moitié de ce dont j'ai besoin. J'ai encore besoin de stocker le mot de passe pour qu'il ne soit pas à définir et à saisir à chaque fois qu'elle exécute le script. Je veux que ce soit aussi fluide et aussi peu de clics que possible.

Pour les crédits, je choisis d'aller avec le compte administrateur local car ce mot de passe ne change pas. Le compte d'administrateur local fera le travail. Je devrai stocker ces informations de compte sur l'ordinateur afin que Powershell puisse récupérer le compte chaque fois qu'elle exécute le script. Il faudra donc que ce soit un fichier chiffré dans une variable de chemin.

# define path to store password and input password 
$path = "C:\Users\User\Password folder"
# get the encrypted local admin password from user path
$encpwd = Get-Content $path\admin.bin
# convert admin file to secure string 
$passwd = ConvertTo-SecureString $encpwd
# define local admin credential 
$cred = new-object System.Management.Automation.PSCredential 'computer name\local admin',$passwd
# go to DVD drive launch setup.exe as local admin with no user input required
Set-Location D:\
Start-Process PowerShell -Cred $cred -ArgumentList .\setup.exe

Je pourrais obtenir quelques downvotes pour cela, mais je sais quelque part que je dois définir et mettre "" Read-Host "du texte sur la saisie du mot de passe" -AsSecureString "" dans une variable existante ou une nouvelle variable. Je dois saisir le mot de passe dans le processus. J'ai essayé quelques spots. Pensées? Sagesse? Impossible?

Windows 7 Pro Powershell v4

8
Art.Vandelay05

J'ai trouvé un moyen d'atteindre l'objectif avec Powershell. Tout d'abord, un script doit être exécuté sur l'ordinateur de l'utilisateur (une seule fois) pour créer un mot de passe crypté, puis le stocker dans un fichier. Remarque: Le fichier de mot de passe stocké n'est pas un fichier txt contenant le mot de passe administrateur local en texte brut. Il s'agit de la sortie de la cmdlet ConvertFrom-SecureString.

Tout d'abord, le script pour entrer le mot de passe et le stocker dans un fichier. Cela ne devra être exécuté qu'une seule fois sur l'ordinateur cible.

# Enter encrypted password once and store to file; define variables 
$path = "C:\Folder\Folder\"
$passwd = Read-Host "enter desired password" -AsSecureString
$encpwd = ConvertFrom-SecureString $passwd
$encpwd > $path\filename.bin

Maintenant, le script que l'utilisateur exécutera pour lancer le programme à partir du DVD en tant qu'administrateur local. Elle exécutera le script à partir du raccourci sur le bureau après avoir inséré le DVD dans le lecteur de disque. Après avoir lancé le script, le programme fonctionne parfaitement et elle peut le faire sans demander à moi ou à l'autre administrateur de l'aide (qu'elle aime).

# define path to store password and input password 
$path = "C:\folder\folder"
# get the encrypted password from the path
$encpwd = Get-Content $path\filename.bin
# convert file to secure string 
$passwd = ConvertTo-SecureString $encpwd
# define needed credential 
$cred = new-object System.Management.Automation.PSCredential 'computer name\account name',$passwd
# go to DVD drive launch setup.exe as user with privileges to launch the program with no user input required
Set-Location D:\
Start-Process PowerShell -Cred $cred -ArgumentList .\setup.exe

Cet article Powershell.org a contribué à obtenir ma réponse http://powershell.org/wp/2013/11/24/saving-passwords-and-preventing-other-processes-from-decrypting-them/

1
Art.Vandelay05

Exécuter en tant qu'administrateur sans être administrateur

Autoriser un utilisateur non administrateur à exécuter un programme en tant que compte administrateur local mais sans invite d'élévation

Ci-dessous sont des instructions pour configurer une solution de contournement pour obtenir une application à exécuter comme un autre compte qui est un administrateur local. Le compte qui exécute le processus n'a cependant pas besoin d'être un administrateur local sur le PC.


Solution de contournement de Windows (voir toutes les notes ci-dessous)

Exemples

  1. Créer un nom d'utilisateur (domaine ou local): ProxyRunAsLocalAdmin

  2. Créer un mot de passe (domaine ou local): <SomeComplexPassword>

Notes

  • Ce compte est configuré comme local admin sur les PC où quelque chose doit être exécuté avec des autorisations d'administrateur sans vraiment donner à l'utilisateur final qui l'exécutera (exécutera) les autorisations d'administrateur local.

  • Il s'agit d'une option de dernier recours pour les choses qui ne fonctionneront pas pour les non-administrateurs sur les machines locales où donner leur compte (l'utilisateur final et/ou un groupe) explicite registry et file system l'accès aux objets de niveau ne fonctionne pas.

Sécurité

  • Personne ne doit avoir cette information autre que les administrateurs de domaine, c'est-à-dire. ne partagez pas avec l'utilisateur final.

Création d'un raccourci avec le RUNAS (cela pourrait être D:\Setup.exe)

Raccourci Properties Exemple

TARGET Exemple de champ (ci-dessous):

%systemroot%\system32\runas.exe /user:domain\ProxyRunAsLocalAdmin /savecred "C:\Program Files\BlueStacks\HD-StartLauncher.exe"

START IN Exemple: "C:\Program Files\BlueStacks"

enter image description here

IMPORTANT: Les guillemets autour du Start In : le champ peut être requis qu'il y ait ou non des espaces dans le chemin.


Notes de configuration supplémentaires

  • Vous pouvez créer un compte d'utilisateur de domaine ou un compte d'utilisateur de PC local à cet effet et lui accorder des autorisations d'administrateur local sur la machine locale chaque fois qu'une telle solution est nécessaire.
  • Vous devrez exécuter le raccourci avec les " RUNAS, etc. " une fois connecté au PC en tant qu'utilisateur qui devra exécuter ce processus sans être un administrateur local eux-mêmes. Lorsque vous effectuez cette opération, vous devrez saisir les informations d'identification, en les mettant en cache cette fois, mais elles ne seront pas nécessaires à chaque exécution ultérieure du processus à l'aide de la [~ # ~] runas [~ # ~] et /SAVECRED à nouveau à partir de ce même profil de compte utilisateur.
  • Ce mot de passe pour ce compte n'est PAS partagé avec qui que ce soit, seuls les administrateurs de domaine\systèmes ont ces informations et les connectent chaque fois que cela est nécessaire par utilisateur et par machine - il s'agit également d'un accord de type de profil de compte d'utilisateur Windows. Donc, si vous créez un nouveau profil pour un utilisateur et que cette solution est nécessaire, le raccourci devra être exécuté à nouveau pour que les informations d'identification soient également mises en cache pour leur profil (par un administrateur).

Notes de sécurité

  1. Vous ne pouvez pas restreindre l'accès à la connexion locale pour le compte via la stratégie de groupe ou le compte ne pourra pas exécuter RUNAS de manière interactive. J'ai déjà essayé cela pour la sécurité mais je n'ai pas pu le faire fonctionner correctement.
  2. Puisqu'il s'agit d'une information d'identification mise en cache avec des autorisations d'administrateur local, techniquement un utilisateur final où cela est enregistré pourrait appliquer cette même technique RUNAS à un autre EXE ou via la ligne de commande si cela est autorisé. Cela signifie que vous, en tant qu'administrateur, devez peser les avantages et les inconvénients avec cette solution, y compris les risques. Peut-être que cela permet à vos personnes de confiance ou à des éléments qui sont en cours ou nécessaires encore et encore sans accorder réellement l'administrateur local de l'utilisateur final est très bien.

Commandes

Vous disposez cependant de certains contrôles pour cette solution, tels que. . .

  • Choisissez à partir de quelles machines vous souhaitez autoriser l'exécution de runas
  • Choisissez les profils utilisateur sur chaque machine à partir desquels vous souhaitez exécuter
  • Vous devez aller dans le profil utilisateur sur cette machine et taper le credentail l'heure initiale indépendamment
  • L'exposition concerne la machine locale au niveau du PC, pas le niveau du domaine car le compte local ou AD est membre de l'adresse IP de la machine locale
  • Ne donnez à ce compte aucun accès aux ressources réseau (rien que l'administrateur du PC local pour chaque PC individuel selon les besoins)
  • Si jamais vous souhaitez désactiver en masse cette fonctionnalité (en supposant utiliser un compte de domaine), désactivez simplement le compte ou changez le mot de passe
  • Assurez-vous que les autres sont conscients de certaines de ces ramifications, etc. et faites-les approuver afin que vous ne soyez pas la personne qui décide de l'utiliser ou non
4
Pimp Juice IT

Eh bien, heureusement, si vous éliminez l'administrateur local, la seule véritable option qui vous reste est la ligne CMD. Powershell est bon, mais je pense que vous pourriez également exécuter un lot avec cela.

Seul inconvénient de chacun d'eux, si l'utilisateur sait ouvrir les scripts, il peut voir ce que vous y mettez, ce qui est un énorme non. Le seul moyen de contourner ce problème consiste à écrire une commande dans le code pour verrouiller le script lors de l'ouverture, et non de son exécution, pour demander un mot de passe.

Peut-être un lot ou un PowerShell écrit pour adresser spécifiquement l'UAC?

0
Jonas Lear

Sur une autre option pour contourner l'UAC, le programme s'exécute sous le compte système, car ce compte n'a pas d'UAC sur un système UAC. Il existe des codes sources sur Internet. Une solution complète se trouve sur robotronic.de/runasadminen.html Cette solution est également utilisable pour un compte non administrateur.

0
Helenri