bodenseehost
Goto Top

Service ruft PsExec auf, Remoteservice wird abgelehnt

Server 2008 (in 2003er AD) als Printserver
PDFCreator "Serverinstallation", startet als Dienst
Über die Aktionen nach dem Druck startet PDFCreator eine Batch in welcher ein PsExec-Aufruf hinterlegt ist.

Konkret wird auf einem Server 2008 PDFCreator als Service betrieben - über Instsrv und srvany aus dem Reskit angelegt. Die PDFCreator Serveranwendung wurde so eingerichtet, dass eingehende Drucke automatisch abgespeichert werden, und als Aktion nach dem Druck ein kleines Script aufgerufen wird, welches auf dem Client einen Mailentwurf mit diversen Vorgaben und dem soeben erzeugten Dokument als Anhang erstellt.

Das ganze läuft über einen PsExec-Aufruf, und funktioniert:
a) wenn ich die PDFCreator-Anwendung manuell auf dem Server starte
b) wenn ich den Aufruf aus dem Batchfile selbst in einem CMD abschicke

Dabei habe ich sowohl die Anwendung als auch die CMD unter verschiedensten Kontexten gestartet (Admin-User, lokaler Admin, alternativer Netzwerkadminuser, auch schon als Benutzer). Da im PsExec-Befehl der Benutzer mitgegeben wird, funktionierte es in jedem Fall einwandfrei und der/mein Client führte den Befehl wie gewünscht aus.

Sobald jedoch der PDF-Creator als Dienst läuft, wird die Batch zwar ausgeführt, aber der PsExec-Befehl fällt mit einem Fehler auf die Nase:
Could not start PsExec service on CLIENTNAME:Zugriff verweigert


Ich hatte dann vermutet, dass es mit dem LSA zu tun hätte, und den Dienst unter (diversen) anderen Benutzern/Admins gestartet - unter welchen es wie oben erwähnt MANUELL tadellos funktionierte - aber auch da bleibt's beim PsExec-Aufruf hängen.
An der Eula-bestätigung von PsExec liegts übrigens nicht, der RegKey wurde auch unter dem LocalService erzeugt.
Was kann mir denn hier überhaupt noch den Zugriff verweigern? Was läuft anders als beim manuellen Programmaufruf?
Arbeitet PsExec beim Aufruf aus einem Service in irgend einer Weise anders???

Content-ID: 177325

Url: https://administrator.de/contentid/177325

Ausgedruckt am: 05.11.2024 um 17:11 Uhr

DerWoWusste
DerWoWusste 06.12.2011 um 16:12:36 Uhr
Goto Top
Moin.
An der Eula-bestätigung von PsExec liegts übrigens nicht, der RegKey wurde auch unter dem LocalService erzeugt.
Genauer bitte. Wo wurde er erzeugt? Im Zweifelsfall bitte den psexec-Switch /accepteula ranhängen.

Aber was anderes: warum ein Service über srvany? Hat pdfcreator nicht einen lauffähigen Serverdienst ohne Eigenbau schon dabei? Was leistet Deiner mehr?
Bodenseehost
Bodenseehost 06.12.2011 um 16:28:55 Uhr
Goto Top
Mit /accepteula verhält sich nichts anders... unter den Users gibts einen Eintrag (Software\Sysinternals\PSexec) EulaAccepted (Dword) der auf 1 stehen muss... das ist alles. Ich neige dazu die Eula als Ursache auszuschließen.

Das Andere: Leider bringt der PDFCreator KEINEN service mit, so dass die Serveranwendung VOR Benutzeranmeldung am Server nicht laufen würde, somit auch die Drucke nicht wie gewünscht verarbeitet würden. Ich habe bisher auch leider keine Möglichkeit gefunden, die gewünschten Sauereien mit den erzeugten PDF's anzustellen *g*. Das Letzte minor-Update habe ich nicht nachvollzogen, aber ich glaube nicht dass sich dahingehend etwas geändert hat. Die Geschichte mit srvany läuft ja, der PDFCreator selbst tut alles was er soll...

EDIT: Ich gehe doch Recht, dass der S-1-5-18 der LSA ist? Dort ist der Eintrag nämlich gegeben........
DerWoWusste
DerWoWusste 06.12.2011 um 23:55:35 Uhr
Goto Top
Moinsen.

Hab es nachgestellt. Richtig ist: man muss pdfcreator als Dienst installieren, das stimmt.
Aber es geht alles nach Plan. Mein Server (2008 R1 SP2) schickt als Aktion nach Autospeicherung eine Nachricht per psexec-Kommando an meinen Client (Win7 SP1) und die kommt an.
Verwendeter Befehl: psexec \\win7 -u win7\user -p Kennwort /accepteula msg * Testnachricht
PDFCreator-Dienst wird als local system gestartet. Erzeugt habe ich den Dienst mit http://www.pirmasoft.de/runassvc.php
Bodenseehost
Bodenseehost 07.12.2011 um 09:58:27 Uhr
Goto Top
Schön, dass mein Ansatz soweit zu funktionieren scheint, und vielen Dank für Deine Bemühungen bis hierher!

Leider fällt der PsExec bei mir jederzeit auf die Nase, wenn er 'vom Service aus' startet. Manuell ist das alles überhaupt kein Problem. Ich werde also mal weitersuchen.
Wenn ich den Service unter einem Admin starten lasse - der den Befehl 'manuell' erfolgreich ausführen kann - welche Gründe gäbe es, dass es dann als ServiceNICHT funktioniert? Das ist mir nicht ganz schlüssig.

Echo Off
Set Full=%1
FOR %%I in (%Full%) DO Set Client=%%~nI
PsExec \\%CLIENT% -i -u DOMAIN\User -p Pass msg * Test

Wird von jedem beliebigen CMD-User ausgeführt (Aufruf der Batch mit Parameter, so wie es der PDF-Creator tut. Manuell geht's, als Service nicht. Ich versehe es nicht. Eventlog empfängt nichts brauchbares hierzu.
DerWoWusste
DerWoWusste 07.12.2011 um 10:17:00 Uhr
Goto Top
Pass mal auf. Du musst jetzt erst mal meins nachstellen. Nimm die selben OS und das selbe psexec (v 1.98 hatte ich genutzt) und den selben Befehl und erstell den Dienst mal auf die selbe Weise. Erst wenn Du das hinbekommst, sehen wir weiter. Es muss gehen, win7 und der Server haben keine Konfigurationsänderungen.
Bodenseehost
Bodenseehost 07.12.2011 um 11:27:12 Uhr
Goto Top
Windows Server 2008 R1 SP2 ist gegeben, PDFC ruft o.g. Batch auf (anders bekommt man den beauftragenden Clientnamen leider nicht übergeben). Den Service habe ich gelöscht und mit runassvc neu angelegt. Keine Änderung. Der Dienst scheint ja auch nicht wirklich das Problem zu sein, denn die Batch arbeitet ja... nur dem PSEXEC-Befehl fehlen auf dem Weg über den Service irgendwie die Rechte.

EDIT... PSEXEC verwende ich ebenfalls in v1.98

EDIT2
{On local machine, the Psexec file will create a local windows service to
perform all the detailed real work, so if the running account has no enough
permission, it will fail to install the windows service, so your Asp.net
running thread/process must running with enough permission account token.}

Kann es was mit dem .net zu tun haben? Wo könnte ich da etwas anders haben als Du? Bei mir steht der ASP.NET auf manuell und startet mit dem "Netzwerkdienst" statt dem lokalen Systemkonto.
DerWoWusste
DerWoWusste 07.12.2011 um 12:47:12 Uhr
Goto Top
Bitte nimm meine Batch und trag ein Zielsystem ein. Nur das ist ein echter Vergleichstest. Nimm auch einen lokalen Nutzer auf dem Zielsystem, wie ich.
Bodenseehost
Bodenseehost 07.12.2011 um 14:09:31 Uhr
Goto Top
Das habe ich ja auch getan...

psexec \\CLIENTNAME -u CLIENTNAME\administrator -p ##### /accepteula msg * Testnachricht

Manuell ausgeführt funktioniert das wieder... PsExe braucht bei verwendung lokaler Anmeldedaten zwar länger beim "Connecting to Clientname...", es geht dann aber durch. Der Batchaufruf aus dem PDFCreator im Service bleibt wieder im "Zugriff Verweigert" hängen.

Was mir aufgefallen ist: ich gebe die Befehle 'manuell' in CMD-Instanzen ein, die ich unter entsprechenden Adminusern gestartet habe die ich dann auch für die Ausführung des Dienstes verwendet habe.
Wenn ich ein CMD aber 'einfach so' öffne und den Befehl absetze zieht die UAC, und PsExec bittet um Zustimmung der Fortsetzung. Lehne ich die ab, sehe ich wieder "Zugriff verweigert".
Könnte mir die UAC zwischen dem Service und PsExec stehen? Und warum nicht bei Dir???
DerWoWusste
DerWoWusste 07.12.2011 um 14:24:39 Uhr
Goto Top
Ich glaube nicht, dass es die UAC ist, diese greift doch gar nicht für das Account "system". Aber bitte, schalt sie testhalber ab - bei mir ist sie an.
Stell bitte sicher, dass das Kennwort korrekt übergeben wird, indem Du den Dienst einstellst auf "allow service to interact with the desktop" und im Skript eine Zeile mit
pause
ans Ende stellst. Nun wird angezeigt, ob das Kennwort klappt. Ich hatte selbst zunächst Schwierigkeiten, da mein Kennwort ein "%" enthielt.