Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Neues Skript, neues Glück. ACL Powershell Skript und ein paar Fragen.

Frage Entwicklung Batch & Shell

Mitglied: thorsten-rehm

thorsten-rehm (Level 1) - Jetzt verbinden

13.05.2008, aktualisiert 18.10.2012, 16697 Aufrufe, 15 Kommentare

Ziel: Von einem bestimmten Pfad die ACL auslesen, aber nur die Ordner (inkl. Unterordner) und nicht die Dateien.

Habe mir folgendes ausgedacht:

01.
$dir = dir c:\temp -recurse -exclude *.* 
02.
get-acl $dir | format-list 
03.
 
04.
Ergebnis: 
05.
 
06.
Path   : Microsoft.PowerShell.Core\FileSystem::C:\temp\acl-test 
07.
Owner  : ZAPP\Thorsten 
08.
Group  : ZAPP\Kein 
09.
Access : Jeder Allow  ReadAndExecute, Synchronize 
10.
         VORDEFINIERT\Administratoren Allow  FullControl 
11.
         VORDEFINIERT\Benutzer Allow  Modify, Synchronize 
12.
         ZAPP\Thorsten Allow  FullControl 
13.
Audit  : 
14.
Sddl   : O:S-1-5-21-436374069-... 
15.
 
16.
Path   : Microsoft.PowerShell.Core\FileSystem::C:\temp\acl-test\Neuer Ordner 
17.
Owner  : ZAPP\Thorsten 
18.
Group  : ZAPP\Kein 
19.
Access : VORDEFINIERT\Administratoren Allow  FullControl 
20.
         VORDEFINIERT\Benutzer Allow  Modify, Synchronize 
21.
         Jeder Allow  ReadAndExecute, Synchronize 
22.
         ZAPP\Thorsten Allow  FullControl 
23.
Audit  : 
24.
Sddl   : O:S-1-5-21-436374069-... 
25.
         )

Jetzt habe ich mir überlegt, dass ich das Ganze gerne gekürzt hätte auf Path, Owner, Group und Access.
Also:

01.
$dir = dir c:\temp -recurse -exclude *.* 
02.
get-acl $dir | format-list path,owner,group,access 
03.
 
04.
Ergebnis: 
05.
 
06.
Path   : Microsoft.PowerShell.Core\FileSystem::C:\temp\acl-test 
07.
Owner  : ZAPP\Thorsten 
08.
Group  : ZAPP\Kein 
09.
Access : {System.Security.AccessControl.FileSystemAccessRule, System.Security.AccessControl.FileSystemAccessRule, Syste 
10.
         m.Security.AccessControl.FileSystemAccessRule, System.Security.AccessControl.FileSystemAccessRule} 
11.
 
12.
Path   : Microsoft.PowerShell.Core\FileSystem::C:\temp\acl-test\Neuer Ordner 
13.
Owner  : ZAPP\Thorsten 
14.
Group  : ZAPP\Kein 
15.
Access : {System.Security.AccessControl.FileSystemAccessRule, System.Security.AccessControl.FileSystemAccessRule, Syste 
16.
         m.Security.AccessControl.FileSystemAccessRule, System.Security.AccessControl.FileSystemAccessRule}
Die Fragen:
- Was macht er denn aus Access? Wo sind meine ganzen Benutzer?
- Kann man von Path dieses "Microsoft.PowerShell.Core\FileSystem::" ausfiltern?

Ich habe noch ein paar Gedanken zu dem "ACL" Thema, aber erstmal das hier. Die Grundkenntnisse müssen einfach sitzen ;)

Danke an alle im Voraus.
Mitglied: thorsten-rehm
14.05.2008 um 18:54 Uhr
Hat niemand eine Idee? Meine Frage zu schwer oder unverständlich ;)
Bitte warten ..
Mitglied: TuXHunt3R
15.05.2008 um 09:00 Uhr
Hab leider gerade keine PowerShell zur Verfügung, aber was passiert bei folgendem Code:
01.
$dir = get-childitem c:\temp -recurse -exclude *.* 
02.
get-acl $dir | select-object path,owner,group,access | format-list path,owner,group,access 
?
Bitte warten ..
Mitglied: thorsten-rehm
15.05.2008 um 09:28 Uhr
Leider das Gleiche.
Als würde im das Recht fehlen die ACL auszulesen, wenn man die Formatierung ändert.

Ich habe hier noch etwas gefunden, was mir aber von der Darstellung her nicht gefällt, aber vielleicht ist es der richtige Ansatz:
(die 1. Zeile des Skripts ist identisch und steht nicht dabei)
01.
get-acl $dir | select Path -Expand Access | format-list IdentityReference,AccessControlType,FileSystemRights
Bitte warten ..
Mitglied: thorsten-rehm
15.05.2008 um 22:57 Uhr
Ich habe eine Lösung gefunden:

01.
dir -recurse -exclude *.* c:\temp | get-acl | format-list path,owner,group,accesstostring 
02.
 
03.
Ergebnis: 
04.
Path           : Microsoft.PowerShell.Core\FileSystem::C:\temp\acl-test 
05.
Owner          : ZAPP\Thorsten 
06.
Group          : ZAPP\Kein 
07.
AccessToString : VORDEFINIERT\Administratoren Allow  FullControl 
08.
                 NT-AUTORITÄT\SYSTEM Allow  FullControl 
09.
                 ZAPP\Thorsten Allow  FullControl 
10.
                 ERSTELLER-BESITZER Allow  268435456 
11.
                 VORDEFINIERT\Benutzer Allow  ReadAndExecute, Synchronize 
12.
                 VORDEFINIERT\Benutzer Allow  AppendData 
13.
                 VORDEFINIERT\Benutzer Allow  CreateFiles 
14.
 
15.
Path           : Microsoft.PowerShell.Core\FileSystem::C:\temp\acl-test\Neuer Ordner 
16.
Owner          : ZAPP\Thorsten 
17.
Group          : ZAPP\Kein 
18.
AccessToString : VORDEFINIERT\Administratoren Allow  FullControl 
19.
                 NT-AUTORITÄT\SYSTEM Allow  FullControl 
20.
                 ZAPP\Thorsten Allow  FullControl 
21.
                 ERSTELLER-BESITZER Allow  268435456 
22.
                 VORDEFINIERT\Benutzer Allow  ReadAndExecute, Synchronize 
23.
                 VORDEFINIERT\Benutzer Allow  AppendData 
24.
                 VORDEFINIERT\Benutzer Allow  CreateFiles 
25.
 
Auf dieses "accesstostring" muss man erstmal kommen!

Quelle: http://www.microsoft.com/technet/scriptcenter/csc/tips/ps/acl.mspx
Bitte warten ..
Mitglied: TuXHunt3R
16.05.2008 um 13:15 Uhr
Da muss man wirklich erst mal drauf kommen.

Muss ich mir merken....
Bitte warten ..
Mitglied: thorsten-rehm
16.05.2008 um 15:24 Uhr
Jetzt würde ich gerne noch einen drauf setzen:

Das Skript soll mir die Verzeichnisse anzeigen, bei denen die Berechtigung eingetragen ist, aber nicht die Unterordner bei denen die Vererbung greift. Also mich interessiert nur der, nennen wir es mal, Knotenpunkt.
Gibt es da eine Möglichkeit? Oder so etwas wie ein Optionsschalter wie z.B. exclude "Vererbung" ...
Bitte warten ..
Mitglied: TuXHunt3R
16.05.2008 um 20:53 Uhr
Schau mal hier:

http://www.dotnetframework.de/lserver/CodeSampleDetails.aspx?c=4923

Ist zwar nicht grade das, was du willst, aber es ist beschrieben, wie man herausliest, ob die ACL für ein Objekt vererbt ist oder nicht. ($ACE.IsInherited)
Bitte warten ..
Mitglied: TuXHunt3R
16.05.2008 um 21:16 Uhr
Frage: Wenn du das Script noch erweitern willst, kannst du dann den "Gelöst"-Haken wieder rausnehmen?
Bitte warten ..
Mitglied: thorsten-rehm
16.05.2008 um 21:36 Uhr
Gute Frage. Ich habe den nämlich nicht gesetzt.
Ist jetzt wieder raus.
Bitte warten ..
Mitglied: TuXHunt3R
17.05.2008 um 00:43 Uhr
Da war wohl ein Moderator etwas übereifrig.....


Naja, kann man verstehen, viele User hier muss man explizit darauf hinweisen, dass sie den Beitrag doch bitte als "Gelöst" flagen sollen, sobald sie die Lösung haben.
Bitte warten ..
Mitglied: thorsten-rehm
17.05.2008 um 14:11 Uhr
Puuhh. Ich sitze gerade dran, dass mit $ACE.IsInherited einzubauen. Nicht leicht.
Bitte warten ..
Mitglied: TuXHunt3R
17.05.2008 um 20:11 Uhr
Tja, kann dir in diesem spezifischen Fall auch nicht weiterhelfen, hab das so auch noch nie gebraucht.
Bitte warten ..
Mitglied: thorsten-rehm
28.05.2008 um 10:44 Uhr
Wie kann ich eigentlich eine 1:1 Kopie der ACL machen?
01.
$quelle01 = "C:\temp\test1" 
02.
$ziel01 = "C:\temp\hinein" 
03.
$acl = get-acl $quelle01 
04.
copy $quelle01 -destination $ziel01 -recurse 
05.
dir $ziel01 -recurse | set-acl -aclobject $acl
Ich hätte jetzt wie oben gedacht. Funktioniert.
Er kopiert den test1 Ordner in das Verz. "hinein" und ändert aber nicht von "hinein" die Berechtigung.
Jetzt möchte ich aber eine weitere Quelle angeben. Mit dem gleichen Ziel, also das bei "hinein" die Berechtigung nicht geändert wird, aber bei den Ordnern darunter. Die sollen aber die gleiche Berechtigung wie zuvor haben.
Da komme ich jetzt etwas ins schwanken.
Unter dem Strich möchte ich von ausgewählten Ordnern (Quellen) die Berechtigung beim Kopieren mitnehmen.

Vielleicht hier noch eine andere Darstellung, um das Ganze zu verdeutlichen:

Pfad -> Berechtigung

Quelle
temp\test1 -> User1,User2
temp\test2 -> User3,User4

Ziel
hinein\test1 -> User1,User2
hinein\test2 -> User3,User4

Eigentlich eine 1:1 Kopie. Oder sollte ich da eher mit robocopy ran?
Bitte warten ..
Mitglied: thorsten-rehm
31.05.2008, aktualisiert 18.10.2012
Hat sich erledigt. Habe einen anderen Weg gefunden:
http://www.administrator.de/forum/icacls-vererbungsproblem-88679.html
Bitte warten ..
Mitglied: DavidD
07.09.2010 um 14:12 Uhr
Hallo,

mir wurde durch den Tip "AccessToString" geholfen, daher möchte ich mich revanchieren:
ich habe eine Lösung für die Anzeige nur der "Knotenpunkte":

01.
dir M:\ -recurse | Where-Object {$_.psiscontainer} | where-Object {$_.System.Security.AccessControl.InheritanceFlags -ne 'ContainerInherit'} | Get-Acl | format-list path,owner,group,accesstostring > test.txt
Grüße, David
Bitte warten ..
Neuester Wissensbeitrag
Internet

Unbemerkt - Telekom Netzumschaltung! - BNG - Broadband Network Gateway

(3)

Erfahrungsbericht von ashnod zum Thema Internet ...

Ähnliche Inhalte
Batch & Shell
Powershell CHAT Skript (5)

Frage von xpxy15 zum Thema Batch & Shell ...

Batch & Shell
gelöst PowerShell Ordnergröße Skript ignoriert versteckte Dateien (3)

Frage von Giffas zum Thema Batch & Shell ...

Batch & Shell
Powershell Universelles Skript zum Ordnerberechtigungen ändern (3)

Frage von pixel0815 zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Windows Server
Outlook Verbindungsversuch mit Exchange (15)

Frage von xbast1x zum Thema Windows Server ...

Grafikkarten & Monitore
Tonprobleme bei Fernseher mit angeschlossenem Laptop über HDMI (11)

Frage von Y3shix zum Thema Grafikkarten & Monitore ...

Microsoft Office
Keine Updates für Office 2016 (11)

Frage von Motte990 zum Thema Microsoft Office ...