Jump to content
Melde dich an, um diesen Inhalt zu abonnieren  
Eikatosh

Security Änderung eines Shares

Empfohlene Beiträge

Einen schönen guten Tag,

 

Ich muss 1800 Usershares ändern. Dabei müssen alle Security Einträge gelöscht werden und nur bestimmte Gruppen gesetzt werden. Desweiteren muss der Owner angepasst werden.

Der User selbst wird per TextBox eingegeben.

Hier der Code:

$form = New-Object “System.Windows.Forms.Form”;
$form.Width = 700;
$form.Height = 300;
$form.Text = "Share Berechtigung";
$form.StartPosition = [System.Windows.Forms.FormStartPosition]::CenterScreen;

$textBox1 = New-Object “System.Windows.Forms.TextBox”;
$textBox1.Left = 90;
$textBox1.Top = 90;
$textBox1.width = 500;

$Button1=New-Object "System.Windows.Forms.Button";
$Button1.Left = 270;
$Button1.Top = 120;
$Button1.width = 100;
$Button1.Text="Anpassen";

$eventHandler = [System.EventHandler]{
$textBox1.Text;
$form.Close();};

$button1.Add_Click(
{
      
$ordner =$textBox1.Text;
$temp = "\\Servername\usershare\"+ $textBox1.Text;
New-Item -ItemType directory -Path $temp
$Acl = Get-Acl $temp
$Ar = New-Object  system.security.accesscontrol.filesystemaccessrule($ordner,"FullControl","Allow")
$Ar1 = New-Object  system.security.accesscontrol.filesystemaccessrule("Administrators","FullControl","Allow")
$Ar2 = New-Object  system.security.accesscontrol.filesystemaccessrule("CREATOR OWNER","FullControl","Allow")
$Ar3 = New-Object  system.security.accesscontrol.filesystemaccessrule("SYSTEM","FullControl","Allow")
$Acl.SetAccessRule($Ar)
$Acl.SetAccessRule($Ar1)
$Acl.SetAccessRule($Ar2)
$Acl.SetAccessRule($Ar3)
Set-Acl ($temp) $Acl

$username=$ordner
$ID = new-object System.Security.Principal.NTAccount($username)
$acl.SetOwner($ID)
set-acl -path $temp -aclObject $acl
Get-ChildItem -Path $temp -recurse | set-acl -aclObject $acl
}
)
$form.Controls.Add($button1);
$form.Controls.Add($textBox1);
$ret = $form.ShowDialog();


Ich weiß leider nicht wie man alle Einträge der Security löscht und das Script für SetOwner funktioniert leider nicht. Es wird folgendes ausgegeben: "Die Sicherheits-ID darf nicht der Besitzer dieses Objekts sein."

Hoffe jemand kann mir bei diesem Problem helfen.

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Vielleicht fragst Du einfach den Author des Scripts um Rat.  ;)   ... und nur aus Neugier: Du möchtest 1.800 User-Shares anpassen und willst dafür die User jeweils per Textbox eingeben??  :schreck:  ...  wow ... Hut ab!   ;)

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Moin,

 

oder kürzer gesagt: Ich würde den wesentlichen Teil des Skripts von SetACL erledigen lassen (praktisch Industriestandard für Berechtigungen). Die einzige echte Variable in deinem Skript scheint der Username zu sein, den könnte man bei 1800 Einträgen ja sicher besser aus einer Datei entnehmen.

 

Gruß, Nils

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Morgen,

 

Die User werde ich aus einer Datei entnehmen, dass ist aber noch nicht im Script hinterlegt. Mir geht es wirklich nur um den Ownership und das alle Einträge gelöscht werden. Leider sind immer unterschiedliche User im Ordner hinterlegt daher kann man die zu löschenden User nicht im Script mitgeben.

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Die User werde ich aus einer Datei entnehmen, dass ist aber noch nicht im Script hinterlegt.

Dann ist die Aussage in deinem ersten Posting nicht korrekt.

 

Mir geht es wirklich nur um den Ownership und das alle Einträge gelöscht werden. Leider sind immer unterschiedliche User im Ordner hinterlegt daher kann man die zu löschenden User nicht im Script mitgeben.

Wenn Du eine Liste mit Namen hast, dann kannst Du ja alle entfernen, die momentan NICHT dran sind.

 

Beispiel:

 

$username=$ordner

If $username<>User_aus_der_Datei then

DELETE Eintrag

 

Den Rest darfst Du selbst machen.

bearbeitet von Sunny61

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Ich hab's mir angesehen. Problem dabei ist das in den Security Einträgen viele Unterschiedliche User sind, die da nicht rein dürfen(Jeder Ordner hat andere User drin stehen).

Deshalb hatte ich gefragt ob es ein Script gibt was wirklich alles daraus entfernt.

$Ar = New-Object  system.security.accesscontrol.filesystemaccessrule($ordner,"FullControl","Allow")
$Ar1 = New-Object  system.security.accesscontrol.filesystemaccessrule("Administrators","FullControl","Allow")
$Ar2 = New-Object  system.security.accesscontrol.filesystemaccessrule("CREATOR OWNER","FullControl","Allow")
$Ar3 = New-Object  system.security.accesscontrol.filesystemaccessrule("SYSTEM","FullControl","Allow")

Der Teil beinhaltet nur die Einträge die später drin stehen müssen.

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Moin,

 

wenn du dir endlich mal SetACL ansiehst, wirst du feststellen, dass du damit ACLs bereinigen kannst, um sie danach gezielt neu zu befüllen. Das Tool ist nicht umsonst Industriestandard.

 

Gruß, Nils

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Ich hab's mir angesehen.

Hmmm ...  keinen Kommentar dazu.

Falls Du also weder Nils noch dem Entwickler glaubst, dass das Tool das kann, was auf der Homepage im Feature-Set angegeben ist, kannst Du immernoch ICACLS benutzen. Auch damit kann man existierende ACLs ersetzen - also eine neue erwünschte ACL konfigurieren, ohne die alte zu übernehmen oder zu ergänzen.

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte überlege Dir, ob es nicht sinnvoller ist ein neues Thema zu erstellen.

Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde dich hier an.

Jetzt anmelden
Melde dich an, um diesen Inhalt zu abonnieren  

×