Jump to content

Befehl im Script als Administrator ausführen


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Gibt es in der Befehlszeile von Windows Server 2008 eine vernünftige Möglichkeit, um einen Befehl oder ein Script mit Admin-Rechten auszuführen, ohne den lokalen Admin verwenden zu müssen. Oder heißt bei 2k8 "als Administrator" immer unter dem Konto des lokalen Administrators?

 

Konkretes Problem sieht so aus, das User ein Script starten, welches wieder über psexec auf einem W2k8-Server ein weiteres Script startet, in dem wiederum einige Befehle wie Appcmd.exe ausgeführt werden, die Admin-Rechte benötigen. Dieses Script soll dann Rückmeldungen oder auch ganze Dateien auf den Rechner des Users zurückschreiben. Benötigt also dort Schreibrechte.

Bei W2k3 ware das ganze simple: Das Script am Server ist als Domain-Admin ausgeführt worden, das hat gereicht. In W2k8 hat ja ein Domain-Admin die Hürde, dass man Befehle die höhere Privilegien benötigen "Als Administrator ausführen" muss. Wie nimmt man diese Hürde im Script?

Muss man das unpraktische runas bemühen und den lokalen Admin angeben? Da müsste ich dem Ding irgendwie erst beibringen, dass er sich das Passwort merkt, was sich bei einem Benutzerkonto (fürs Scripting), das sich nicht am Rechner anmelden darf, schwierig gestalten könnte.

 

Bessere Ideen?

 

LG,

Richard

Link zu diesem Kommentar

Moin,

 

euer ganzes Konstrukt sieht mir höchst zweifelhaft aus. Das war es schon unter 2003, nur dass man es unter 2008 eben jetzt merkt.

 

Man kann keine einzelnen Befehle mit höheren Privilegien ausführen. Auch runas wäre in deinem Fall keine Hilfe, weil es, von der Kommandozeile aufgerufen, keine Privilegienerhöhung durchführt. Und abgesehen davon, kann man da auch kein Kennwort mitgeben (wäre ja noch schöner).

 

Bester Ausweg also: Baue dein Konstrukt so auf, dass es den Sicherheitsbedingungen von Windows entspricht, statt sie zu umgehen.

 

Gruß, Nils

Link zu diesem Kommentar
Moin,

 

euer ganzes Konstrukt sieht mir höchst zweifelhaft aus. Das war es schon unter 2003, nur dass man es unter 2008 eben jetzt merkt.

 

Dieses Konstrukt erledigt verschiedene Dinge, die tlw. Admin-Rechte erfordern. Die entsprechende Konfiguration dafür (Pfade, virt. Server) holt sich erst das Script am jeweiligen Server, das psexec dort ausführt. Das ursprünglich gestartete Script soll also verschiedene Server bedienen. Das heikelste ist wohl das temporäre Anhalten eines virtuellen Webservers, weil es diesen wieder automatisch starten soll, wenn der User etwa darauf vergisst und es dadurch aktiv bleiben muss. Dazwischen sind Rückmeldungen an den User nötig.

 

Moin,

Bester Ausweg also: Baue dein Konstrukt so auf, dass es den Sicherheitsbedingungen von Windows entspricht, statt sie zu umgehen.

Keine Idee, wie ich das anstellen soll :confused:.

Der User, der die Sache startet, hat eben nicht die benötigten Rechte und bei W2k8 sind noch dazu (glaube ich) lokale Admin-Rechte nötig.

Ob letzteres auch tatsächlich so ist, war eine der eigentlichen Fragen.

 

Aber schaue dir das Tool CPAU.exe an, vielleicht hilfts...

 

CPAU.exe kenne ich nicht, werde mich aber auf die Suche machen.

 

 

Danke.

 

 

Gruß,

Richard

Link zu diesem Kommentar

Hallo!

 

die du aber erstens gar nicht gestellt hast und die wir zweitens auch kaum beantworten können, ohne den Vorgang zu kennen.

 

Die Frage hatte ich in folgenden zwei Sätzen gestellt, wenn auch nicht so direkt:

Oder heißt bei 2k8 "als Administrator" immer unter dem Konto des lokalen Administrators?

 

die Hürde, dass man Befehle die höhere Privilegien benötigen "Als Administrator ausführen" muss. Wie nimmt man diese Hürde im Script?

 

Moin,

Solange du so nebulös bleibst, werden wir keine "besseren Ideen" liefern können.

 

Ich hätte gedacht, ich hätte alles nötige aufgezählt. Wenn ich alle möglichen Funktionen beschreibe, würde das Seiten füllen, die wohl niemand lesen möchte.

Das eine Problem ist das Werkzeug Appcmd.exe das aus dem Script am entfernten Server aufgerufen wird und höhere Privilegien erfordert. Das andere Problem ist, dass auch in Dateien des User-Rechners eine Rückmeldung geschrieben werden soll.

Ersteres erfordert, Stand meines Wissens, lokale Admin-Rechte, das zweite zumindest Domain-Benutzer-Rechte. Für etwaige nötige Verbesserung wäre ich sehr dankbar.

 

Funktionen am enternten Server im Überblick:

Website stoppen

Application Pools recyclen

über CollabNet SVN ein Verzeichnis aus dem Repository (erfordert Authentifizierung in dessen String) aktualisieren

Website umleiten

Website-Konfiguration wieder in ursprünglichen Zustand setzen

Website starten

Logs und Rückmeldungen generieren

diese auf den auslösenden Rechner kopieren bzw.

per Mail (bmail.exe) versenden

einen geplanten Task (Aufgabe in W2k8isch) löschen

 

Alles, was den Webserver betrifft macht appcmd.exe. So würd ich es mir jedenfalls wünschen.

 

Wenn du mich auch prügelst, ich weiß nicht, was ich dazu mehr aufzählen sollte.

 

Gruß,

viragomann

Link zu diesem Kommentar

Schon das ein User auf einem Server, DC per Skript Operationen ausführen kann, dass halt ich für sicherheitsbedenklich; diese dann noch mit den "Rechten" als Administrator, da tut sich doch potentiell eine Sicherheitslücke auf, besonders ein mögliches Mitgeben eines Passwortes als Parameter für psexec.

 

Es kann natürlich sein, Sicherheit ist nachrangig.

 

Ich habe sowas ähnliches mal gebaut, allerdings nicht zur Manipulation des Server, es wurde vom Dozentenrechner aus nur die Druckerwarteschlangen auf den Studentenrechnern beendet oder gestartet.

 

Wurde mal geprüft, ob das Problem über die Objektverwaltung(Delegation) lösbar ist?

Link zu diesem Kommentar

Moin,

 

der sinnvollste Ansatz für das, was ihr da macht, ist ein Dienst, der die Aufgaben ausführt. Nur dieser braucht dann die lokalen Berechtigungen. Der Dienst selbst prüft dann, ob der User, von dem er angetriggert wird, dies seinerseits darf.

 

Euer Konstrukt ist aus Sicherheitssicht nicht sinnvoll, weswegen es auch an den erhöhten Sicherheitsbedingungen von Windows 2008 scheitert.

 

Gruß, Nils

Link zu diesem Kommentar

Hallo viragomann.

 

Das Konstrukt steht aus sicherheitstechnischer Sicht auf sehr wackeligen Füssen, wobei uns aber nicht alle Hintergründe bekannt sind. Ob es sich bei dem Benutzer, welcher dieses Script bedient, um einen "normalen" Benutzer handelt oder um einen Administrator, der lediglich keine administrative Berechtigung auf dem entsprechenden Server besitzt, ist hier nicht ersichtlich. Daher muss Du dir die Sicherheitsfrage für deine Umgebung selbst beantworten.

 

Wie ich sehen kommst du um eine Privilegienerhöhung nicht drumherum, wobei der Ort (Server/Client) und der Zeitpunkt gut gewählt werden wollen.

Eine Lösung könnte wie folgt aussehen:

1. Erstellst für den Benutzer eine einfache Seite mit einem Button wie "jetzt aktualisieren" auf dem Server, wo die spätere Aktualisierung laufen soll. Die Seite dürfen natürlich nur berechtigte Personen benutzen. Dies ist mit relativ wenig Auffwand in ASP oder ASP.NET realisierbar. Die Seite läuft natürlich mit unpriviligierter Berechtigung, so wie es sich gehört.

2. Auf dem Server erstellt Du einen Job-Datei (siehe CPAU /?) für CPAU.exe (falls mit Windows Server 2008 noch kompatibel. Alternativ: PowerShell, was mit etwas mehr Aufwand verbunden ist), der ein Script mit erhöher Berechtigung startet. Diese Job-Datei sollte natürlich außerhalb des wwwroot-Verzeichnises liegen, damit es keiner einfach Downloaden kann.

3. Der Benutzer geht auf die Seite und klickt auf den "jetzt aktualisieren"-Button und die Seite führt auf dem Server die Job-Datei von CPAU aus. CPAU startet dein Script mit erhöhter Berechtigung und führt entsprechende Aktionen aus (Webseite stopen, ...). Wobei die Authentifizerung für das CollabNet über die Webseite abgefragt werden kann. Die Rückmeldungen werden dann entweder in eine Datei umgeleitet, die von deiner Seite wiederum Ausgewertet und dem Benutzer auf der Seite dargestellt werden oder es sendet dem Benutzer einen Email. Den Benutzernamen kennst Du ja bereits, da die Webseite dies bereits beim Aufruf dies auswerten muss.

 

Mit diesem Konzept würdest du ganz klar die Bedienoberfläche (in deinem jetztigen Konzept das Script, welches der Benutzer ausführt) vom Programmcode (Script auf dem Server), der mit erhöhter Berechtigung läuft, trennen. Es ist definitv ein Sicherheitsgewinn.

Link zu diesem Kommentar

Moin,

 

danke für eure Antworten. Es sind einige interessante Anätze dabei, die Sache wohl besser zu lösen.

 

Die Variante mit dem Dienst von NilsK finde ich gut. Doch müssen wohl die entsprechenden Berechtigungen, diesen Dienst zu starten wohl auch erst erteilt werden.

 

Die Lösung mit der ASP.Net Seite von de.le könnte ich mir auch ganz gut vorstellen.

 

Ich wollte aber für den einen 2k8 Webserver nicht soviel Aufwand treiben und die Bedienung des Ganzen hätte ich gern serverunabhängig gehabt.

Ich werd mir die Lösungen durch den Kopf gehen lassen.

 

Immer noch unbeantwortet ist allerdings die Frage, wie man auf dem 2k8-Server ein Script mit erhöhten Privilegien ausführen kann, oder muss ich jetzt fragen, ob dies überhaupt möglich ist? Und heißt unter Server 2k8 "als Administrator ausführen" dass das Programm unter dem Konto des lokalen Administrators ausgeführt wird. Als Domain-Admin angemeldet zu sein, reicht ja wohl nicht.

 

Anmerken möchte ich noch, dass die User die das Script starten auch Administratoren in ihrem Bereich sind und auf den Rechner, auf dem sie es starten, haben auch nur Administratoren Zugriff; auf dem Rechner, auf dem die Funktionen ausgeführt werden, haben sie administrative Berechtigungen.

Darum hatte ich mir über die Sicherheit bislang keine ernsthaften Sorgen gemacht.

 

Grüße,

viragomann

Link zu diesem Kommentar

Moin,

 

Immer noch unbeantwortet ist allerdings die Frage, wie man auf dem 2k8-Server ein Script mit erhöhten Privilegien ausführen kann, oder muss ich jetzt fragen, ob dies überhaupt möglich ist? Und heißt unter Server 2k8 "als Administrator ausführen" dass das Programm unter dem Konto des lokalen Administrators ausgeführt wird. Als Domain-Admin angemeldet zu sein, reicht ja wohl nicht.

 

faq-o-matic.net Benutzerkontensteuerung (UAC) richtig einsetzen

 

Gruß, Nils

Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...