none
Wie kann ich den Besitzer eines Benutzerkontos ändern? RRS feed

  • Frage

  • Hallo und noch ein frohes neues Jahr,

    ich erstelle mit einem Script Benutzerkonten und vergebe unter anderem Zugriffsrechte auf das Benutzerkonto.

    #Zugrifssrechte für Homeverzeichnis vergeben
    #Access Control Liste für Homedirectory anzeigen lassen und in Variable $objACL schreiben
    $objACL = get-acl $HomeDirectory
    #Neue Acces Controll Einträge definieren
    $objACE = new-object system.security.accesscontrol.filesystemaccessrule("$UserSamAccountName","Modify","ContainerInherit, ObjectInherit","None","Allow")
    #Bestehendes Access Control Liste ändern
    $objACL.SetAccessRule($objACE)
    #Neue Access Control Liste auf das Homeverzeichnis des Users anwenden
    set-acl $HomeDirectory $objACL

    Ich führe das Script auf meinem eigenen Benutzerkonto aus (mit credentialvariblen), um nicht immer eine Remoteverbindung zum Server herstellen zu müssen.

    Wenn ich nach dem erstellen eines Neuen Benutzerkontos auf Eigenschaften/Freigabe gehe, steht als "Besitzer" mein Kontoname. Ich möchte aber das die Gruppe "Administratoren" als Besitzer eingetragen wird.Alles ist korrekt bis auf das Besitzerkonto welches ich ändern möchte.

    Danke für eure Hilfe:)

    Grüße


    • Bearbeitet MCMaggi Donnerstag, 12. Januar 2017 13:20
    Donnerstag, 12. Januar 2017 13:20

Antworten

  • Hallo,

    so:

    $OwnerName = "UserName"
    $Domain = "Domaine"
    $FileName = "sollte ein UNC Pfade sein \\server\...)"
    $ID = New-Object System.Security.Principal.NTAccount($Domain,$OwnerName)
    $Acl = Get-Acl $FileName
    $Acl.SetOwner($ID)
    Set-Acl $FileName $Acl

    Beste Gruesse
    brima

    Donnerstag, 12. Januar 2017 14:11

Alle Antworten

  • Hast Du Dir schon mal icacls angesehen? Die Option /setowner könnte was für Dich sein.

    Grüße - Best regards

    PS:> (79,108,97,102|%{[char]$_})-join''


    • Bearbeitet BOfH-666 Donnerstag, 12. Januar 2017 13:27
    Donnerstag, 12. Januar 2017 13:27
  • Danke :)

    ich dachte aber das es doch sicher auch mit set-acl oder so gehen müsste?

    z.B. set-acl -owner Administratoren  oder so

    Grüße


    • Bearbeitet MCMaggi Donnerstag, 12. Januar 2017 13:54
    Donnerstag, 12. Januar 2017 13:53
  • Hallo,

    so:

    $OwnerName = "UserName"
    $Domain = "Domaine"
    $FileName = "sollte ein UNC Pfade sein \\server\...)"
    $ID = New-Object System.Security.Principal.NTAccount($Domain,$OwnerName)
    $Acl = Get-Acl $FileName
    $Acl.SetOwner($ID)
    Set-Acl $FileName $Acl

    Beste Gruesse
    brima

    Donnerstag, 12. Januar 2017 14:11
  • Des habe ich auch gerade gefunden :D

    Dankeschön:)

    Donnerstag, 12. Januar 2017 14:13
  • Ich habe es allerdings so:

    $ACL = Get-Acl X:\Test\Test
    $ACL.SetOwner([System.Security.Principal.NTAccount]"Administratoren")
    Set-Acl X:\Test\Test $ACL

    Führe dies allerdings auf dem Server aus.

    Donnerstag, 12. Januar 2017 14:14
  • Hi,

    hier gibt es auch ein Script dafuer.

    Click

    Beste Gruesse
    brima

    Donnerstag, 12. Januar 2017 14:19
  • Das habe ich auch schon gefunden aber warum das ganze Script wenn es mit 3 Zeilen geht o.O?

    Ich habe jetzt noch das Problem das es mir folgende Fehlermeldung bringt wenn ich es auf meinem Client ausführe.

    set-acl : Es wurde versucht, einen nicht autorisierten Vorgang auszuführen.

    und zwar an dieser Stelle: Set-acl "Pfad" $ACL

    Ich habe aber mich mit dem Admin auf dem Server verbunden und

    $objACE = new-object system.security.accesscontrol.filesystemaccessrule("$UserSamAccountName","Modify","ContainerInherit, ObjectInherit","None","Allow")
    $objACL.SetAccessRule($objACE)

    funktioniert komischerweise ohne Probleme...

    Danke und Grüße

    Donnerstag, 12. Januar 2017 15:00
  • Hallo,

    und dein Pfad ist ein UNC Pfad also z.B: \\computername\c$ anstelle von C:\ ?

    Beste Gruesse
    brima


    • Bearbeitet brima Donnerstag, 12. Januar 2017 15:13
    Donnerstag, 12. Januar 2017 15:05
  • > Ich habe aber mich mit dem Admin auf dem Server verbunden und
     
    Läuft Dein Skript in einer Admin-Commandline? Sonst könnte es Probleme mit UnfilterAdministratorToken (aka UAC) geben... Und was genau ist "der Admin"?
     
    > $objACL.SetAccessRule($objACE)
     
    Um Berechtigungen zu setzen, braucht man keinen Vollzugriff. Um den Besitzer zu ändern aber schon. Prüf mal in die Richtung...
     
    Donnerstag, 12. Januar 2017 16:30
  • Mit dem Modul NTFSSecurity geht das etwas einfacher:

    Set-NTFSOwner -Path D:\test\ -Account test

    Sollten keine Rechte vorhanden sein, hilft das cmdlet Enable-Privileges weiter. Es aktiviert die Backup und Restore Privilegien und erlaubt auch das Schreiben von Dateien und deren Rechte ohne explizite Berechtigung zu haben.


    -Raimund

    Donnerstag, 12. Januar 2017 23:27
  • Und was genau ist "der Admin"?

    War ein bisschen zu allgemein ausgedrückt... Ich meine damit das Konto mit welchen man auf alles Vollzugriff hat, also müsste es ja eigentlich funktionieren. Ich gebe am Anfang meines Scripts die credentials ein und speicher diese in $cred. Bei allen Befehlen die auf den Server zugreifen den Parameter -credential $cred.

    Bei Set-ACL bzw. Get-ACL gibt es diesen Paramter nicht aber es funktioniert trotzdem da ich den Paramter zuvor schon verwendet habe. nur bei SetOwener bringt es Probleme...

    Freitag, 13. Januar 2017 09:35
  • Dankeschön :)

    aber eigentlich sollte es ja auch so funktionieren ohne erst ein extra Module zu importieren...

    Grüße

    Freitag, 13. Januar 2017 09:36
  • Da das Thema recht undurchsichtig beschreiben ist, kann es das nicht sagen. Den Besitz für eine Datei zu übernehmen, auf der man keine Rechte hat, geht natürlich auch ohne ein extra Modul, bedarf dann aber dutzender Codezeilen. Es liegt bei jedem selbst, hier eine Entscheidung zu treffen.

    "Bei allen Befehlen die auf den Server zugreifen den Parameter -credential $cred."? PowerShell bietet mehr, ich würde mal hier anfangen: Get-Help about_Remote


    -Raimund

    Freitag, 13. Januar 2017 09:50
  • Hast du dein Problem gelöst? Wenn ja , markiere bitte noch die Antwort(en).

     


    Blog: http://bytecookie.wordpress.com

    Neu: Powershell Code Manager v5 ! Link
    (Schneller, besser + komfortabler scripten.)

    Hilf mit und markiere hilfreiche Beiträge mit dem "Abstimmen"-Button (links) und Beiträge die eine Frage von dir beantwortet haben, als "Antwort" (unten).
    Warum das Ganze? Hier gibts die Antwort.



    Montag, 16. Januar 2017 15:08
    Moderator