Temporäre AD User umschaltung möglich?

  • Hi,

    ich habe ein Script, welches auf einem Netzlaufwerk eine Datei manipulieren soll (Text schreiben). Den Zugriff auf diese Datei haben z.B. nur AD-User der Gruppe ADZUGRIFF.
    Mein Script wird nun von einem User auf einem lokalen AD-Rechner ausgeführt, der nicht dieser Gruppe ADZUGRIFF angehört. Somit weigert sich natürlich das Skript die entsprechende Datei zu ändern.
    Gibt es die Möglichkeit die Dateimaipulation (z.B. via FileWriteLine()) als ein anderer, berechtigter AD-User auszuführen oder muss ich da Umwege über z.B. RunAs gehen?

    Danke schonmal für Eure Antworten.

  • Selbst mit runas wirst du da schon Probleme bekommen. Bin mir nicht 100% sicher, aber wenn der User bereits eine Verbindung mit dem SMB Server hat kann dein Script vermutlich keine eigene Verbindung zum networkshare mit einem anderen Account aufbauen. Wie dem auch sei, selbst wenn es geht würde das zwangsläufig bedeuten, dass du in deinem Script Zugangsdaten für den berechtigten User Account hinterlegen musst. Das ist fast genauso als ob du den Anwender gleich in eine Gruppe packst die permanent Rechte auf die betreffende Datei hat. Was spricht da eigentlich dagegen? Offensichtlich gestehst du dem Anwender ja das Recht ein die Datei zu verändern, warum soll er das dann nicht nachweisbar über seine eigenen Zugangsdaten tun dürfen? Wenn du dafür einen allgemeinen Account verwendest kannst du nicht mehr nachvollziehen wer die Datei evtl. böswillig verändert oder gelöscht hat.

    Eine wesentlich sicherere Lösung wäre eine Client / Server Anwendung. Den Server lässt du auf einem beliebigen Server System über einen berechtigten Benutzeraccount laufen, der Client schickt seine Daten dann an das Serverscript und lässt dieses die Schreiboperation vornehmen. Vorteil liegt klar auf der Hand. Es werden keine Zugangsdaten an den Client herausgegeben und du kannst im Serverscript sogar zusätzliche Prüfungen einbauen, die sicherstellen, dass die Daten die der Client gerne geschrieben haben möchte korrekt und nicht bösartig sind. Neben dieser Grundfunktion kann dein Serverscript bei Bedarf auch alle Clientscripte über eine Updatefunktion auf gleichen Versionsstand bringen, das erleichtert die spätere Verwaltung bei notwendigen Änderungen am Script.

  • Hallo zusammen,

    mein erstes Posting... Hey... Cool!

    Hey CRouch: Wie wäre es mit einer Aufgabe mit den entsprechenden Rechten auf dem Client? Die Aufgabe wird im Aufgabenplaner erstellt und kann mit normalen Rechten angestoßen werden, wird aber mit den erhöhten bzw. den anderen ausgeführt. Klingt gut?

    Ich hatte den Tipp vor Jahren mal aus der c't, finde aber den Link nicht mehr. hier steht das aber so ähnlich drin...

    Grüße
    TIotuade

  • Danke ersteinmal für die Vorschläge.

    @Tlotuade
    So müsste ich erste auf jedem Clientrechner ein Task anlegen. Das möchte ich nicht machen. Das Programm soll out of the Box laufen.

    @misterspeed
    Die Server-Client Idee Sache wäre ein saubere Sache ist aber leider nicht so leicht durchzusetzen, da ich nicht einfach ein von mir erstelltes Programm auf den Server stellen kann. Damit haben unsere Admins ein Problem :).
    Evtl. kann ich das später als Ausbaustufe mal durchsetzen.

    Die aktuelle Lösung, die ich gefunden habe ist etwas "buckelig" geworden, aber funktioniert.
    Ich habe ein extra script als .exe kompiliert. Dieses beinhaltet die Datenmanipulation auf dem Server.

    Wenn durch das Hauptprogramm so eine Manipulation durchgeführt werden soll, muss ein auf dem Netzlaufwerk schreibberechtigter AD-User seine Login-Daten eingeben und das Extrascript wird als RunAs ausgeführt.
    Das funktioniert prinzipiell recht gut, wäre da nicht das Problem, dass dieser User Rechte an der entsprechenden Stelle auf dem Rechner haben muss, wo das Zusatzscript liegt. D.h. ich schiebe das Zusatzprogramm in das @tempdir. Dann führe ich Runas mit @tempdir als working directory aus und lösche am Ende die Datei wieder aus dem @tempdir.

    Für ähnliche, aber weniger umständliche Lösungen bin ich durchaus noch offen :D

  • den takst wird ja remote erstellt!

    Code
    schtasks /Create /S HOST /RU USER /SC ONCE /ST 00:00 /TN TempTask /TR "(UNC) PFAD" /F
    schtasks /Run /S HOST /TN TempTask
    schtasks /Delete /S HOST /TN TempTask /F