RPC von Client auf Server ausführen

bleppsatter
Goto Top
Hallo Community,

ich habe folgendes Problem und noch keinen konkreten Ansatz. Die Konstellation ist wie folgt:
Wir verwenden eine eigene Datenbank, bei der Projekte verwaltet werden, wozu auch eine Ablage mit den jeweiligen Projektordnern gehört. Nun ist die Idee, aus den Werten der Datenbank die Zugriffsberechtigungen für die Projektordner zu setzen, wobei folgendes angenommen werden kann: jeder Mitarbeiter hat in jedem Projektordner Leserechte, Projektbeteiligte dürfen in Ihren Projektordnern lesen und schreiben, der Projektleiter hat Vollzugriff. Da sich auch Projekte ändern, soll das Skript dazu diese Änderungen registrieren und entsprechend reagieren. Verwendet werden Access 2013, SQL Server 11.0.6020, Windows Server 2008 R2 und Windows 7 Professional 64bit. Ich habe eine Anleitung gefunden, mit der ich ein Powershellskript erstelle, welches auf einem Server ausgeführt wird und Berechtigungen an Ordnern auf den angegeben Clients ändert. Die andere Richtung ist genau das, was ich suche, aber ich will auch nicht auf jedem Client Powershell installieren. Besser wäre per Befehl vom Client aus das Skript auf einem Server auszuführen oder ein anderer Weg. Es gibt ja auch die RPC-Methode, nur habe ich keine Ahnung wie ich sowas implementiere. Hätte da jemand einen Ansatz für mich?

Besten Dank.

Content-Key: 317700

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

Ausgedruckt am: 20.05.2022 um 15:05 Uhr

Mitglied: DerWoWusste
DerWoWusste 13.10.2016 aktualisiert um 10:54:27 Uhr
Goto Top
Hi.

Ich überlese mal gewollt, wozu du das Ganze brauchst.
Mein Kommentar ist nur zu Client->Server Befehl ausführen.
Von remote kann ein Nichtserveradmin keine Befehle ausführen. Zu Serveradmins möchtest Du die Leute sicherlich nicht machen.
Somit bleiben zwei Möglichkeiten:
1 dem User das Recht geben, einen Admin auf dem eigenen PC ein Remotekommando schicken zu lassen
2 dem User das Recht geben, einen Admin direkt auf dem Server handeln zu lassen

Beispiel zu 1: geplanten Task erstellen, der als ausführendes Konto einen Serveradmin hat (Kennwort eingespeichert) und dem Nutzer das recht geben, den Task auszuführen. !Achtung!: er darf auf keinen Fall die Aktion des Tasks modifizieren können, also hier auf keinen Fall eine lokale Batch benutzen

zu 2: geplante Tasks auf dem Server einrichten, die der Nutzer Triggern kann - entweder direkt auf dem Server, falls Ihr RDP benutzt, oder über Triggering. Dazu muss der Nutzer einfach mit eventcreate.exe bestimmte Eventlogeinträge erstellen und der Task eben diese als Trigger eingestellt haben. Dies muss ebenso auf dem Server selbst ausgeführt werden. Von remote ginge das per Trick, indem Du die Nutzer in definierte Ordner schreiben lässt, auf denen NTFS-Überwachung läuft, welche dann auch wieder Events generiert.
Mitglied: atze187
Lösung atze187 13.10.2016 aktualisiert um 14:29:10 Uhr
Goto Top
Hi,

ich halte das für den falschen Ansatz. Grundsätzlich sollten die FS-Berechtigungen als Gruppen per Active Directory verwaltet werden und dann die entsprechenden Benutzer zu Gruppen hinzugefügt bzw. aus diesen entfernt werden. Die Gruppenmitgliedschaften kann man dann beispielsweise mittels Powershell kontextuell auf die benötigen Gruppen beschränkt aus der Datenbank holen und im AD setzen ohne das jemand etwas Ausführen muss (z.B. per Windows- oder SQL Server-Task).

Gruß,
André
Mitglied: BleppSatter
BleppSatter 14.10.2016 um 09:37:58 Uhr
Goto Top
Hallo,

danke auf die Idee bin ich noch garnicht gekommen. Ich habe jetzt ein PS-Script für die Änderung der Berechtigung und rufe dieses remote mit psexec auf. Das klappt super mit dem jeweiligen Benutzer als Variable und ich werde das jetzt für die Gruppen umschreiben. Ein kleines Problem besteht dennoch.
Der Befehl wird in der cmd zwar ausgeführt, jedoch schließt diese sich nicht anschließend. Drücke ich die Eingabetaste, erhalte ich einen exit code 0, der aber alles bedeuten kann. Mein Skript ist aber trotzdem erfolgreich ausgeführt worden, da die gewünschte Wirkung der Befehle eingetreten ist. Ich habe schon als letzten Befehl in das PS-Skript exit 42 angegeben, der mir dann auch zurückgegeben wird bei Ausführung in der cmd. Das cmd-Fenster bleibt aber trotzdem offen und gibt den exit code erst dann aus, wenn ich die Eingabetaste drücke. Woran kann das liegen, bzw. gibt es einen Trick, dass die batch-Datei auch geschlossen wird, wenn das PS fertig ist?

@DerWoWusste deine Möglichkeit würde bestimmt auch funktionieren, aber ich bin nicht so überzeugt, ob ich über diesen Weg das auch so gut hinbekomme. Daher verfolge ich das nicht weiter, danke dir aber trotzdem für den Beitrag.