Vererbung unterbrechen

Antworten
rch
Beiträge: 152
Registriert: 07. Dez 2006, 08:12
Wohnort: Eschborn
Kontaktdaten:

Vererbung unterbrechen

Beitrag von rch » 24. Mai 2007, 13:40

Hallo zusammen,

ich habe mal wieder ein kleines Problem.

Ich gebe bei der Installation eines Paketes den User der lokalen Gruppe (Benutzer, Hauptbenutzer) Schreibrechte auf das jeweilige Programmverzeichniss, sowie die Unterverzeichnisse.

Dies mache ich via

Code: Alles auswählen

FileDaclEx.Add	(%ProgramFilesDir%\MRO\BQT\%ProductName%%zaehler%, %$LocalUsers%, GRANT, READ WRITE EXECUTE DELETE, SUB_CONTAINERS_AND_OBJECTS_INHERIT)
Nun möchte ich aber speziell auf 4 Dateien (in einem Unterverzeichnis) diese Vererbung unterbrechen, und den o.g. Usergruppen lediglich das Lese- und Ausführungsrecht für diese Dateien geben.

Diese habe ich wie folgt versucht

Code: Alles auswählen

FileDaclEx.Add	(%ProgramFilesDir%\MRO\BQT\%ProductName%%zaehler%\Daten\PROTOKOL.DBF, %$LocalUsers%, SET, READ EXECUTE, NO_INHERITANCE)
Leider scheint das nicht zu klappen, denn wenn ich unter den Sicherheitseinstellungen zu den Dateien schaue, haben die Usergruppen nach wie vor das Änderungsrecht.

Kann mir jemand sagen was ich falsch mache?!

rch
Beiträge: 152
Registriert: 07. Dez 2006, 08:12
Wohnort: Eschborn
Kontaktdaten:

Beitrag von rch » 31. Mai 2007, 13:32

Hat denn tatsächlich keiner einen Vorschlag was ich noch ausprobieren könnte?

Jochen_Schmitt
Beiträge: 298
Registriert: 14. Dez 2004, 12:24
Wohnort: Reinheim
Kontaktdaten:

Beitrag von Jochen_Schmitt » 31. Mai 2007, 16:23

Hallo,

in den API Bezeichnungen bin ich jetzt auch nicht 100% drin.
Ich stelle mal zur Diskussion, ob das NO_INHERITANCE Flag hier richtig ist und die Vererbung von darüber greift. Versuche alternativ auch mal die Brechtigung auf die einzelne Datei mittels FileDacl.Add zu setzen.

Grüße
Jochen Schmitt

rch
Beiträge: 152
Registriert: 07. Dez 2006, 08:12
Wohnort: Eschborn
Kontaktdaten:

Beitrag von rch » 01. Jun 2007, 07:54

Jochen_Schmitt hat geschrieben:Versuche alternativ auch mal die Brechtigung auf die einzelne Datei mittels FileDacl.Add zu setzen.
Jochen Schmitt
Danke, dass mit FileDacl.Add probier ich gerne nochmal aus, aber in meinen Unterlagen von der Matrix Schulung steht als Anmerkung, dass man ab Windows 2000 lieber auf FileDaclEx.Add setzen soll. Deswegen habe ich versucht ausschließlich diesen zu verwenden.

Aber ich lasse nichts unversucht. ;)

Danke für den Tipp schon einmal.

rch
Beiträge: 152
Registriert: 07. Dez 2006, 08:12
Wohnort: Eschborn
Kontaktdaten:

Beitrag von rch » 05. Jun 2007, 13:22

So, habe jetzt mal den FileDacl.Add Befehl ausprobiert

Code: Alles auswählen

FileDaclEx.Add	(%ProgramFilesDir%\MRO\BQT\%ProductName%%zaehler%, %$LocalUsers%, SET, READ WRITE EXECUTE DELETE, SUB_CONTAINERS_AND_OBJECTS_INHERIT)
FileDacl.Add	(%ProgramFilesDir%\MRO\BQT\%ProductName%%zaehler%\Daten\PROTOKOL.DBF, %$LocalUsers%, REPLACEACE, READEXECUTE, READEXECUTE)
FileDacl.Add	(%ProgramFilesDir%\MRO\BQT\%ProductName%%zaehler%\Daten\PROTINFO.DBF, %$LocalUsers%, REPLACEACE, READEXECUTE, READEXECUTE)
FileDacl.Add	(%ProgramFilesDir%\MRO\BQT\%ProductName%%zaehler%\Daten\BFTH.DBF, %$LocalUsers%, REPLACEACE, READEXECUTE, READEXECUTE)
FileDacl.Add	(%ProgramFilesDir%\MRO\BQT\%ProductName%%zaehler%\Daten\HILFSTXT.DBF, %$LocalUsers%, REPLACEACE, READEXECUTE, READEXECUTE)
Nachdem ich das Paket nun installiert habe (ohne Fehlermeldung) und mir die Dateirechte ansehen will kriege ich folgende Fehlermeldung (siehe Bild).

Beim klick auf Abbrechen zeigt sich das Sicherheitsmenü wie folgt:

Klick auf Abbrechen

Beim klick auf OK passiert folgendes:

Klick auf OK

Irgendwie bin ich langsam echt ratlos.

Die Verwendung von FileDaclEx.Add funktioniert nicht (hier kann die Vererbung nicht aufgebrochen werden (scheinbar) und die Verwendung von FileDacl.Add führt zu einer Fehlermeldung und EVENTUELL (nocht nicht getestet) zu einer NICHT gewünschten Nebenwirkung (das eventuell JEDER Vollzugriff besitzt).

Sind ja tolle Perspektiven...

Hat noch jemand einen Rat/Tipp/Vorschlag?

Jochen_Schmitt
Beiträge: 298
Registriert: 14. Dez 2004, 12:24
Wohnort: Reinheim
Kontaktdaten:

Beitrag von Jochen_Schmitt » 05. Jun 2007, 13:35

Hallo,

ich sehe zwar die Einstellungen nicht, kann mir jedoch vorstellen, dass es die Meldung bzgl. der Reihenfolge ist. Solange die Werte nicht in der richtigen reihenfolge sind, führt es zu Problemen bei der Anwendung (zumindest meine Erfahrung). Falls Dir vom Support auch keiner helfen kann, würde ich es ggf. mit XCACLS.VBS von MS versuchen. Hier ist m.E. für diesen Fall besser erklärt, welcher Schalter was macht.

Grüße
Jochen

rch
Beiträge: 152
Registriert: 07. Dez 2006, 08:12
Wohnort: Eschborn
Kontaktdaten:

Beitrag von rch » 05. Jun 2007, 14:05

Meiner Meinung nach, liegt das Problem ganz woanders. Scheinbar unterstützt der Befehl FileDacEx.Add nicht die Funktion die Rechtevererbung unter Windows 2000 und XP zu unterbrechen! Wenn die Vererbung aber nicht unterbrochen wird und die Rechte einfach neu gesetzt werden, dann kommt es zu dieser Meldung.

Siehe auch: http://www.mcseboard.de/windows-forum-a ... 53423.html

Das heißt, hier fehlt dem Befehl FileDacEx.Add einfach eine (für mich zumindest) wichtige Funktion.

Kann aber auch sein, das ich hier falsch liege mit meiner Ansicht und es sich eventuell um einen Fehler bei Microsoft oder auch bei mir in meiner setup.inf handelt (ich also zu blöd war, das was ich wollte mit den vorhandenen Befehlen umzusetzen).

rch
Beiträge: 152
Registriert: 07. Dez 2006, 08:12
Wohnort: Eschborn
Kontaktdaten:

Beitrag von rch » 05. Jun 2007, 15:18

Habe jetzt allerdings eine andere Möglichkeit gefunden:

Mit dem Kommandozeilentool cacls.exe kann ich genau das machen was ich möchte. Siehe:Parameter von cacls.exe

Allerdings müsste ich dazu das Programm per call aufrufen und diesem wiederum einige Parameter übergeben.

Leider habe ich die Unterlagen zur call Syntax gerade nicht zu Hand. Ist es überhaupt möglich dem call Befehl von Empirum Parameter zu übergeben?

Ich würde nämlich gerne folgenden Aufruf verwenden:

Code: Alles auswählen

call %windir%\system32\cacls.exe %ProgramFilesDir%\MRO\BQT\%ProductName%%zaehler%\BFTH.DBF /e /p %$LocalUsers%:r
Leider funktioniert es nicht. Ich kriege allerdings auch keine Fehlermeldung.
Zuletzt geändert von rch am 05. Jun 2007, 15:37, insgesamt 2-mal geändert.

AFiedler
Beiträge: 265
Registriert: 15. Nov 2005, 16:02
Wohnort: Köln
Kontaktdaten:

Beitrag von AFiedler » 05. Jun 2007, 15:36

müsste doch auch so funktionieren
call cmd /c cacls [PARAMETER]

rch
Beiträge: 152
Registriert: 07. Dez 2006, 08:12
Wohnort: Eschborn
Kontaktdaten:

Beitrag von rch » 05. Jun 2007, 15:42

Funktioniert leider auch nicht. :cry:

rch
Beiträge: 152
Registriert: 07. Dez 2006, 08:12
Wohnort: Eschborn
Kontaktdaten:

Beitrag von rch » 05. Jun 2007, 15:46

Kommando ZURÜCK. Mit dem cacls Befehl (in beiden Varianten) funktioniert es!

Habe leider den falschen Pfad verwendet. :roll:

killerkiwi
Beiträge: 28
Registriert: 08. Mai 2007, 16:25
Wohnort: Bretten
Kontaktdaten:

Beitrag von killerkiwi » 27. Jun 2007, 16:53

Hi!
schlage mich auch gerade mit den Rechten rum und schaff es ebenfalls nicht die Vererbung aufzubrechen mit dem FileDaclEx.Add... Vielleicht kann uns da auch jemand der Matrix42 etwas näher steht Erleuchtung bringen, den eigentlich wollte ich mir nicht mit ner "Krücke" (Call eines anderen Programms) behelfen müssen...
btw: wenn ich im Package Editor gucke dann gibt es da noch FileDaclAdd1 und FileDaclAdd2... was ist den an denen toll (finde da nämlich auch nix in der Doku drüber)

rch
Beiträge: 152
Registriert: 07. Dez 2006, 08:12
Wohnort: Eschborn
Kontaktdaten:

Beitrag von rch » 28. Jun 2007, 07:59

killerkiwi hat geschrieben:wenn ich im Package Editor gucke dann gibt es da noch FileDaclAdd1 und FileDaclAdd2... was ist den an denen toll (finde da nämlich auch nix in der Doku drüber)
Also wenn ich meinen Package Editor starte und in der Security Sektion FileDacl.Add1 oder FileDacl.Add2 zwei eingebe nimmt er das nicht an.

In der Doku steht auch nix darüber. Wo haben Sie denn die Befehle gefunden?

Ich wäre im übrigen auch froh, wenn das Problem die Vererbung zu unterbrechen gefixt würde. Solange muss/werde ich mir aber mit der "Krücke" helfen müssen.

Übrigens funktioniert die wunderbar.

Habe zur Vorsicht noch eine Abfrage eingebaut ob cacls auf dem Rechner vorhanden ist. Damit bin ich auf der sicheren Seite. Auch wenn es nicht die eleganteste Lösung ist...

Antworten

Zurück zu „Paketierung“

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 9 Gäste