Ermöglichen Sie dem Standardbenutzer, das Programm als lokaler Administrator ohne Eingabeaufforderung auszuführen

8

Ich arbeite in einer Umgebung, in der lokale Administratorrechte für Benutzer nicht zulässig sind. Überhaupt. Dies ist sehr schön, kann aber auch schmerzhaft sein, wenn Mitarbeiter, die über lokale Administratorrechte verfügen müssen, um ein Programm auszuführen oder Software zu installieren, für die erhöhte Berechtigungen erforderlich sind, auch wenn sie nur die Installation durchführen. Es gibt einen Benutzer in der Buchhaltung, der eine monatliche DVD von einem unserer Anbieter erhält, die dringend benötigte Berichte enthält. Um die Berichte anzuzeigen und ein Backup zu erstellen, muss sie die ausführbare Datei auf der DVD ausführen. Die ausführbare Datei erfordert Administratorrechte für die Installation. Seit ich hier bin, wird jeden Monat, wenn ich die EXE-Datei ausführe, die Benutzerkontensteuerung angezeigt und ich stelle die dringend benötigten Informationen zum Ausführen des Installationsprogramms bereit.

Wenn dies ein einmaliges Programm wäre, würde ich das Gimmick des Microsoft Application Compatibility Toolkit verwenden, um die Benutzerkontensteuerung zu umgehen. Http://www.techrepublic.com/blog/windows-and-office/selectively-disable-uac-for-your-trusted-vista -Anwendungen / Da dies jedoch eine neue DVD ist, die ihr jeden Monat zugesandt wird, benötige ich ein Tool, das sie selbst für diese Operation verwenden kann.

Ich habe mich bei Server Fault umgesehen und auch Google-Fu ausgeführt, aber nichts Nützliches gefunden. Ich könnte einer von einigen in einer einzigartigen Situation sein.

Ich möchte Poweshell verwenden, um das Werkzeug herzustellen. Idealerweise möchte ich, dass sie die DVD einlegen und dann das Poweshell-Tool starten kann (ohne Zweifel über ihre Desktop-Verknüpfung), das das DVD-Laufwerk betrachtet und die Datei setup.exe als lokaler Administrator ohne UAC-Eingabeaufforderung ausführt. ohne dass sie irgendwelche Ausweise vorlegen muss.

Was ich bisher habe, ist im Moment etwas zusammengesetzter Müll. Ich bin kein Powershell Jedi. Ich bin ein Poweshell Padawan. Ich habe die Hälfte von dem, was ich brauche. Ich muss das Passwort noch speichern, damit es nicht jedes Mal definiert und eingegeben werden muss, wenn sie das Skript ausführt. Ich möchte, dass dies so reibungslos und mit möglichst wenigen Klicks erfolgt.

Für die Creds entscheide ich mich für das lokale Administratorkonto, da sich dieses Passwort nicht ändert. Das lokale Administratorkonto erledigt den Job. Ich muss diese Kontoinformationen auf dem Computer speichern, damit Powershell das Konto jedes Mal abrufen kann, wenn sie das Skript ausführt. Dies muss also eine verschlüsselte Datei in einer Pfadvariablen sein.

# 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

Ich bekomme vielleicht ein paar Abstimmungen dafür, aber ich weiß, dass ich irgendwo einen Text über die Eingabe des Passworts "-AsSecureString" "in eine vorhandene Variable oder eine neue Variable definieren und in" Read-Host "einfügen muss. Ich muss das Passwort in den Prozess eingeben. Ich habe ein paar Spots ausprobiert. Gedanken? Weisheit? Unmöglich?

Windows 7 Pro Powershell v4

Art.Vandelay05
quelle
Warum nicht einfach die Anmeldeinformationen mit bekommen Get-Credential?
Zoredache
"Benutzern ist überhaupt kein lokaler Administratorzugriff gestattet. Ich möchte, dass ein Benutzer lokalen Administratorzugriff erhält . " Wenn sie lokalen Administratorzugriff benötigen, um ihre Arbeit zu erledigen, ist die Richtlinie zu restriktiv - ändern Sie sie. Geben Sie dem Benutzer die Anmeldeinformationen des lokalen Administratorkontos, und stellen Sie sicher, dass er nicht auf E-Mails oder Freigaben zugreifen kann, sodass Sie nicht versucht sind, diese immer zu verwenden. Stellen Sie ein Audit ein und zeigen Sie dem Benutzer, dass dies der Fall ist. (Es gibt ein Passwort 12x pro Jahr ein. Ist das wirklich das Dringlichste, was Sie automatisieren müssen ...? Können Sie es stattdessen delegieren?)
TessellatingHeckler
@TessellatingHeckler Ist das wirklich das Dringlichste , was Sie automatisieren müssen ...? weil "alles automatisieren", oder? haha nein. Ich habe zwar herausgefunden, wie dieses Ziel erreicht werden kann, dies würde jedoch gegen eine unserer Richtlinien verstoßen. Daher entscheide ich mich, es zu diesem Zeitpunkt nicht für den Benutzer bereitzustellen. Wir erlauben Ausnahmen von der Politik auf formelle Weise, damit ich das Papier "Ausnahme von der Politik" unterschreiben kann, und sie auch, aber ich bin nicht sicher, ob es die Mühe wert ist, etwas zu tun, was ich 12x pro Jahr mache, wie Sie sagen.
Art.Vandelay05
Obwohl ich weiß, dass der Benutzer nicht weiß, wie man ein Powershell-Skript im Editor öffnet, den Inhalt des Skripts anzeigt, den Pfad zur verschlüsselten Kennwortdatei findet und dann die Kennwortdatei entschlüsselt, ist dies immer noch ein Verstoß gegen unsere Richtlinie (weil Es besteht die Möglichkeit, dass ein Angreifer Zugriff auf seine Computerdatei (Kennwortdatei) erhält, diese entschlüsselt und dann lokalen Administratorzugriff auf den Computer hat. Ich möchte kein Teil davon sein.
Art.Vandelay05

Antworten:

4

Als Administrator ausführen, ohne Administrator zu sein

Ermöglichen Sie einem Benutzer ohne Administratorrechte, ein Programm als lokales Administratorkonto auszuführen, jedoch ohne Aufforderung zur Erhöhung

Im Folgenden finden Sie Anweisungen zum Einrichten einer Problemumgehung, damit eine Anwendung als ein anderes Konto ausgeführt werden kann, das ein lokaler Administrator ist. Das Konto, das den Prozess ausführt, muss jedoch kein lokaler Administrator auf dem PC sein.


Die Windows-Problemumgehung (siehe alle folgenden Hinweise)

Beispiele

  1. Benutzernamen erstellen (Domain oder lokal): ProxyRunAsLocalAdmin

  2. Passwort erstellen (Domain oder lokal): <SomeComplexPassword>

Anmerkungen

  • Dieses Konto wird wie local adminauf PCs eingerichtet, auf denen etwas mit Administratorrechten ausgeführt werden muss, ohne dem Endbenutzer, der es ausführt (ausführen), lokale Administratorrechte zu erteilen.

  • Dies ist ein letzter Ausweg für Dinge, die für Nicht-Administratoren auf den lokalen Computern nicht funktionieren, bei denen es nicht funktioniert, ihrem Konto (dem Endbenutzer und / oder einer Gruppe) einen expliziten registryund file systemebenen Objektzugriff zu gewähren.

Sicherheit

  • Niemand darf diese Informationen außer Domänenadministratoren haben - dh nicht mit dem Endbenutzer teilen.

Erstellen einer Verknüpfung mit den RUNAS (dies könnte sein D:\Setup.exe)

PropertiesBeispiel für eine Verknüpfung

TARGET Feldbeispiel (unten):

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

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

Geben Sie hier die Bildbeschreibung ein

WICHTIG: Die doppelten Anführungszeichen um das Feld Start In: können erforderlich sein, unabhängig davon, ob der Pfad Leerzeichen enthält oder nicht.


Zusätzliche Setup-Hinweise

  • Zu diesem Zweck können Sie ein Domänenbenutzerkonto oder ein lokales PC-Benutzerkonto erstellen und dem lokalen Computer lokale Administratorberechtigungen erteilen, wenn eine solche Lösung benötigt wird.
  • Sie müssen die Verknüpfung mit " RUNAS usw. " ausführen, wenn Sie als Benutzer am PC angemeldet sind, der diesen Prozess ausführen muss, ohne selbst ein lokaler Administrator zu sein. Wenn Sie dies tun, müssen Sie den Berechtigungsnachweis eingeben und ihn EINMAL zwischenspeichern. Er wird jedoch nicht bei jeder nachfolgenden Ausführung des Prozesses mit RUNAS und / SAVECRED erneut von diesem GLEICHEN Benutzerkontoprofil aus benötigt.
  • Dieses Kennwort für dieses Konto wird NICHT an Dritte weitergegeben. Nur die Administratoren von domain \ systems verfügen über diese Informationen und schließen sie an, wo immer dies pro Benutzer und Computer erforderlich ist. Es handelt sich auch um ein Profilprofil vom Typ Windows-Benutzerkonto. Wenn Sie also ein neues Profil für einen Benutzer erstellen und diese Lösung benötigt wird, muss die Verknüpfung erneut ausgeführt werden, damit der Berechtigungsnachweis auch für sein Profil zwischengespeichert wird (von einem Administrator).

Sicherheitshinweise

  1. Sie können den lokalen Anmeldezugriff für das Konto nicht über Gruppenrichtlinien einschränken, da das Konto sonst nicht interaktiv ausgeführt werden kann. Ich habe dies aus Sicherheitsgründen bereits versucht, konnte es jedoch nicht ordnungsgemäß ausführen.
  2. Da es sich um einen zwischengespeicherten Berechtigungsnachweis mit lokalen Administratorrechten handelt, kann ein Endbenutzer, in dem dies gespeichert ist, dieselbe RUNAS-Technik auf eine andere EXE-Datei oder über die Befehlszeile anwenden, sofern dies zulässig ist. Dies bedeutet, dass Sie als Administrator die Vor- und Nachteile dieser Lösung einschließlich der Risiken abwägen müssen. Möglicherweise ist es in Ordnung, dies für Ihre vertrauenswürdigen Personen oder Elemente zuzulassen, die ständig ausgeführt werden oder immer wieder benötigt werden, ohne dem lokalen Endbenutzer-Administrator tatsächlich zu gewähren.

Kontrollen

Für diese Lösung sind jedoch einige Steuerelemente vorhanden, z. . .

  • Wählen Sie aus, auf welchen Maschinen Runas ausgeführt werden sollen
  • Wählen Sie auf jedem Computer aus, von welchem ​​Benutzer dies ausgeführt werden soll
  • Sie müssen zum Benutzerprofil auf diesem Computer gehen und die Berechtigungsnachricht unabhängig davon beim ersten Mal eingeben
  • Die Gefährdung erfolgt auf lokaler Ebene auf PC-Ebene, nicht auf Domänenebene, da das lokale oder AD-Konto Mitglied der IP-Adresse des lokalen Computers ist
  • Geben Sie diesem Konto keinen Zugriff auf Netzwerkressourcen für irgendetwas (nur lokaler PC-Administrator pro einzelnem PC nach Bedarf).
  • Wenn Sie diese Funktion jemals massiv deaktivieren möchten (vorausgesetzt, Sie verwenden ein Domänenkonto), deaktivieren Sie einfach das Konto oder ändern Sie das Kennwort
  • Stellen Sie sicher, dass andere über einige dieser Auswirkungen usw. informiert sind, und lassen Sie sie genehmigen, damit Sie nicht die Person sind, die die Entscheidung trifft, diese zu verwenden oder nicht
Zuhälter Saft IT
quelle
Das ist fantastisch! Ich werde das auf jeden Fall überprüfen. Mein Ziel war es, Poweshell zu verwenden, aber diese Antwort war hilfreich. HINWEIS 1: Dieses Konto wird als lokaler Administrator auf PCs eingerichtet, auf denen etwas mit Administratorrechten ausgeführt werden muss, ohne dem Endbenutzer, der es ausführt, lokale Administratorrechte zu erteilen. Ich habe einige Maschinen, auf denen ich immer dann, wenn ein neuer Benutzer an der Maschine ist, mit ihnen Musikstühle spielen muss, um Zugriff auf die installierte Software zu erhalten. Die Software erfordert, dass der Benutzer ein lokaler Administrator ist, und kann nicht für alle Benutzer installiert werden.
Art.Vandelay05
Ich denke, der Benutzer kann das gespeicherte Passwort aus dem Benutzerkontext abrufen. Wenn ja, könnte dies ein Sicherheitsrisiko sein?
eKKiM
@eKKiM Ich denke, es wäre vielleicht eher ein Registrierungs-Hash als der tatsächliche Text der Passwortzeichen, aber ich bin nicht 100% sicher. Ich habe diese Aufgabe nur dann erledigt, wenn es nötig war und jemand anderes sie abgemeldet und genehmigt hat, nachdem ich die Risiken erklärt hatte. Unabhängig von den Risiken ist dies einfach einer der Nachteile der Verwendung. Wenn jedoch eine solche Lösung erforderlich ist, muss jemand wissen, welche Risiken er eingehen möchte. Unsere Maschinen waren super gesperrt, als ich dies vor Jahren für ein Unternehmen und dessen Compliance-Team tat, die mit Risiken einverstanden waren, die sie eingehen wollten.
Pimp Juice IT
Sie müssten wahrscheinlich Domänenadministrator sein, um dieses Detail zu erhalten. Ich denke, aber ich habe keine Zeit, gespeicherte Anmeldeinformationen nachzuschlagen und wo das Windows-Betriebssystem dieses Detail speichert, wenn es gespeichert ist. Ich würde jedoch denken, dass Administratorzugriff erforderlich wäre, um eines zu erhalten Hash-Details aus der Registrierung, aber ich werde versuchen, mich daran zu erinnern, dies später nachzuschlagen, um es zu überprüfen.
Pimp Juice IT
1

Ich habe einen Weg gefunden, um das Ziel mit Powershell zu erreichen. Zuerst muss ein Skript auf dem Benutzercomputer ausgeführt werden (nur einmal), um ein verschlüsseltes Kennwort zu erstellen und es dann in einer Datei zu speichern. Hinweis: Die gespeicherte Kennwortdatei ist keine txt-Datei, die das lokale Administratorkennwort im Klartext enthält. Dies ist die Ausgabe des Cmdlets ConvertFrom-SecureString.

Zuerst das Skript, um das Passwort einzugeben und in einer Datei zu speichern. Dies muss nur einmal auf dem Zielcomputer ausgeführt werden.

# 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

Nun das Skript, das der Benutzer ausführen wird, um das Programm als lokaler Administrator von der DVD zu starten. Sie führt das Skript über die Desktop-Verknüpfung aus, nachdem sie die DVD in das Laufwerk eingelegt hat. Nach dem Start des Skripts läuft das Programm perfekt und sie kann dies tun, ohne mich oder den anderen Administrator um Hilfe zu bitten (was sie liebt).

# 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

Dieser Artikel von Powershell.org war maßgeblich daran beteiligt, meine Antwort zu erhalten: http://powershell.org/wp/2013/11/24/saving-passwords-and-preventing-other-processes-from-decrypting-them/

Art.Vandelay05
quelle
Der Benutzer kann die Anmeldedaten des Domänenbenutzers mit lokalen Administratorrechten ganz einfach abrufen. Ich würde dies als ein großes Sicherheitsproblem betrachten.
eKKiM
0

Zum Glück ist die CMD-Leitung die einzige echte Option, die Sie noch haben, wenn Sie den lokalen Administrator eliminieren. Powershell ist gut, aber ich würde denken, dass Sie auch damit eine Charge ausführen können.

Der einzige Nachteil bei jedem dieser Probleme ist, dass der Benutzer, wenn er weiß, wie die Skripte geöffnet werden, sehen kann, was Sie in sie eingefügt haben. Dies ist ein großes Nein Nein. Die einzige Möglichkeit, dies zu umgehen, besteht darin, einen Befehl in den Code zu schreiben, um das Skript beim Öffnen zu sperren und nicht auszuführen, um zur Eingabe eines Kennworts aufzufordern.

Vielleicht ein Stapel oder eine PowerShell, die speziell für die Benutzerkontensteuerung geschrieben wurde?

Jonas Lear
quelle
Danke für die Eingabe! Ich wollte Poweshell dafür verwenden und fand tatsächlich einen Weg, dies zu tun. Ein guter Teil über die Arbeit bei einem jdm ist, dass ich den Benutzer gut kenne. Sie weiß nicht, wie sie den Inhalt des Skripts betrachten soll. Ich verstehe, dass dies ein Risiko ist, weshalb ich angesichts unseres Umfelds und unserer Richtlinien nicht sicher bin, ob ich es einführen werde. Ich habe jedoch einen Weg gefunden, dies zu tun (ich musste es einfach tun) und mich entschlossen, das zu veröffentlichen Antworte hier, falls es jemand anderem in einer weniger strengen Umgebung helfen kann.
Art.Vandelay05
0

Bei einer anderen Option zum Umgehen der Benutzerkontensteuerung wird das Programm unter dem Systemkonto ausgeführt, da dieses Konto keine Benutzerkontensteuerung auf einem Benutzerkontosystem hat. Es gibt einige Quellcodes im Internet. Eine vollständige Lösung finden Sie unter robotronic.de/runasadminen.html. Diese Lösung kann auch für ein Konto ohne Administratorrechte verwendet werden.

Helenri
quelle