Benutzer mit den meisten Antworten
Wie kann ich den Besitzer eines Benutzerkontos ändern?

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.
Danke für eure Hilfe:)
Grüße
- Bearbeitet MCMaggi 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- Als Antwort markiert Denniver ReiningMVP, Moderator Dienstag, 17. Januar 2017 12:35
Alle 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- Als Antwort markiert Denniver ReiningMVP, Moderator Dienstag, 17. Januar 2017 12:35
-
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
-
> Ich habe aber mich mit dem Admin auf dem Server verbunden undLä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...
-
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
-
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...
-
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
-
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.