Freigabe im Büro für festen aber in sich wechselnden Personenkreis

1 Script, das z.B, eine .txt Datei abfragt, in der Alle User drin stehen die aktuell zugriff haben sollen.
Entferne aus der Liste die Accounts die keinen Zugriff haben sollen und führe das script aus. fertig
 
dann zwei gruppen machen bei den freigaben, die die fest sind kriegen dann auch immer die gleichen pc dann geht es ganz simpel mit der freigabe.
 
Ok, also Powershell könnte tatsächlich funktionieren. Ich bin überrascht, dass das nicht geblockt zu sein scheint. Diese Lösung ist natürlich die professionellere mit der ich eigentlich nicht gerechnet habe.

Wen niemand etwas simpleres hat, dann wer hilft bei dem Script? Die "Namensliste" außerhalb des Scriptes klang schon mal vielversprechend für die Einfacheit in der Benutzung. Benutzerkonten und Gruppen können von mir teilweise beeinflusst werden.
 
Ich glaube das Problem hier ist, dass die Personen, die was sehen/schreiben sollen immer wechseln. Hierfür gibt es keine Bequeme Lösung mit nur einem Mausklick. Zumindest müssten immer Skripte o.ä. angepasst werden - dann kann man aber gleich auch wieder mit den Ordnerfreigaben arbeiten, kostet wahrscheinlich genauso viel Zeit.

Lassen sich die Gruppen 'soll immer alles sehen' und 'soll nur manchma den Ordner sehen' fest teilen, oder ändert sich letzte Gruppe auch immer?
 
Beim Script könnte ich dir helfen, bin aber gerade auf Arbeit und bastel hier an anderen Sachen mit Powershell rum
 
  • Gefällt mir
Reaktionen: Bob.Dig
LoopNBj schrieb:
Ich glaube das Problem hier ist, dass die Personen, die was sehen/schreiben sollen immer wechseln. Hierfür gibt es keine Bequeme Lösung mit nur einem Mausklick. Zumindest müssten immer Skripte o.ä. angepasst werden - dann kann man aber gleich auch wieder mit den Ordnerfreigaben arbeiten, kostet wahrscheinlich genauso viel Zeit.

Lassen sich die Gruppen 'soll immer alles sehen' und 'soll nur manchma den Ordner sehen' fest teilen, oder ändert sich letzte Gruppe auch immer?
Die ließen sich teilen aber wie gesagt in letzterer ändert es sich halt ständig. Wobei ja PvtConker da einen Vorschlag gemacht hat mit einer Liste, das klingt simpel genug.
Ergänzung ()

PvtConker schrieb:
Beim Script könnte ich dir helfen, bin aber gerade auf Arbeit und bastel hier an anderen Sachen mit Powershell rum
Klingt gut, habe von Powershell leider keine Ahnung und eigentlich auch nichts damit zu tun. Bin kein ITler. :)
Ergänzung ()

Meine ursprüngliche Idee war halt, dass die Person die sich drum kümmern soll jedesmal einen Ordner erstellt und den Pfad dann an diejenigen versendet, die Zugriff haben sollen. Security through obscurity hätte meine ich gereicht aber auch das ließe sich ja nicht einmalig konfigurieren weil ja der Oberordner immer für alle sichtbar wäre.
 
Zuletzt bearbeitet:
Anderer Ansatz:
Auf den Ordner hat Zugriff, wer zum Personenkreis gehört.
Du vergibst auf dem neuen Dokument ein Passwort; dieses Password kriegen nur die Leute, die genau dieses Dokument bearbeiten dürfen.
 
Scheidet aus da zu viele Dokumente, die sich auch nicht schützen lassen. Für die Teilnehmer sollte es auch keine Einschränkungen in der Einfachheit und Benutzbarkeit geben.
 
Ist nicht schön aber funktioniert.
Berechtigungen vom Ordner darüber bleiben vererbt, alle anderen Rechte auf dem Zielordner werden entfernt und die aus dem Textfile bekommen Schreibzugriff.
Zeile eins noch anpassen, damit es zu dem gewünschten Ordner führt.
Textfile wird per abgefragt

PowerShell:
$dest = "C:\test\test1"

Function Get-FileName($initialDirectory)
{
    [System.Reflection.Assembly]::LoadWithPartialName("System.windows.forms") | Out-Null
  
    $OpenFileDialog = New-Object System.Windows.Forms.OpenFileDialog
    $OpenFileDialog.initialDirectory = $initialDirectory
    $OpenFileDialog.filter = "txt (*.txt)| *.txt"
    $OpenFileDialog.ShowDialog() | Out-Null
    $OpenFileDialog.filename
}
$list = Get-FileName
$Accounts = Get-Content $list

$acl = Get-Acl $dest
$acl.Access | Where-Object {$acl.RemoveAccessRule($_)} | Out-Null


foreach ($account in  $accounts){
    $ar = New-Object  system.security.accesscontrol.filesystemaccessrule($account, 'Modify', 'ContainerInherit,ObjectInherit', 'None', 'Allow')
    $acl.AddAccessRule($ar)
    }

Set-Acl $dest $acl

edit:
Accounts sollten im Textfile folgendermaßen aufgelistet werden:
Domäne\Accountname1
Domäne\Accountname2
...
usw.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: Bob.Dig
Wow PvtConker, besten Dank.
Ist deutlich komplexer als ich gedacht hätte und funktioniert bei mir zu hause schon mal wunderbar. Die Rechte werden sogar entzogen, bei denen die nicht mehr in der Liste stehen, die vererbten Rechte bleiben aber. Werde morgen das Ganze mal @work versuchen.
:daumen::daumen::daumen:
 
Kein Thema,
kann sein, dass du eine Fehlermeldung bekommst, wenn die Textdatei leer ist (es wird versucht beim foreach mit null in die acl zu schreiben was nicht geht. Den Schönheitsfehler können wir aber auch noch entfernen wenn du willst.
 
Danke danke. Könnte man auch die "Domäne\" im Script vorgeben? Sieht dann noch einfach er aus, letztlich soll ja nicht ich das bedienen.
 
klar geht das
Also du meinst, dass du in der Liste nicht jedesmal "DomäneXY\ davor schreiben musst?
 
Genau. Wobei es auf Arbeit gerade nicht geklappt hat.
Hab die Fehlermeldung mal angehängt. Vielleicht sagt Dir das was?
IMG_20180918_102521.jpg
 
Wenn du noch Anpassungen brauchst, zwecks Domäne etc. gib bescheid.
Sowas lasse ich immer weg, weil wir bei uns auf Arbeit z.B. 7 Domänen haben.
Lässt sich bei dir aber ergänzen, sodass du nur noch die Accountnamen in die Liste schreiben musst
 
  • Gefällt mir
Reaktionen: Bob.Dig
Jetzt sollte es mit einer leeren Textdatei keine Fehler mehr geben. (leere Textdatei = keiner hat mehr Rechte, außer durch Vererbung)
Domain und Pfad ins Script einfügen und es sollte alles passen.
PowerShell:
$dest = "C:\test\test1"
$domain = "domainname"

Function Get-FileName($initialDirectory){
    [System.Reflection.Assembly]::LoadWithPartialName("System.windows.forms") | Out-Null

    $OpenFileDialog = New-Object System.Windows.Forms.OpenFileDialog
    $OpenFileDialog.initialDirectory = $initialDirectory
    $OpenFileDialog.filter = "txt (*.txt)| *.txt"
    $OpenFileDialog.ShowDialog() | Out-Null
    $OpenFileDialog.filename
}
$list = Get-FileName
$accounts = Get-Content $list

$acl = Get-Acl $dest
$acl.Access | Where-Object {$acl.RemoveAccessRule($_)} | Out-Null

if($accounts.count -gt 0){
    foreach ($account in  $accounts){
        $account = $domain + "\" + $account
        $ar = New-Object  system.security.accesscontrol.filesystemaccessrule($account, 'Modify', 'ContainerInherit,ObjectInherit', 'None', 'Allow')
        $acl.AddAccessRule($ar)
        }
}
Set-Acl $dest $acl
 
  • Gefällt mir
Reaktionen: Bob.Dig
Zurück
Oben