Deutsch
Includes

Zugriffsrechte einer Datei setzen

 
Download weiter unten!
Hallo Profaner...

Die Include setzt die bei NTFS-Partitionen vorhandenen Zugriffsrechte (DACL) einer Datei oder eines Ordners auf beliebige User, Gruppen und Werte. Besonders wichtig ist dies bei der Entwicklung von Datenbanken, die auf Mehrbenutzersystemen laufen. Optional gibt es auch die Möglichkeit, eine Logdatei mit den Ergebnissen der APIs der enthaltenen Funktionen zu erstellen.
Darum, ob überhaupt Zugriffsrechte gesetzt werden können, kümmert sich die Include durch die API GetVolumeInformation selbst. Hier wird aber nür verwertet, ob der Zugriff einschränkbar ist, nicht um welche Partition es sich handelt! Wenn die Include auf anderen Betriebssystemen als auf Windows laufen soll, muß dies evtl. mit bedacht werden.

Die Include enthält 2 Prozeduren:
Get_Group_Name (3 Parameter) => Ermittelt über den SID den richtigen Gruppennamen der Jeder-Gruppe oder der Administratoren-Gruppe. In @$(0) wird der ermittelte Gruppenname zurückgegeben.
Set_ACE_IN_DACL (6 Parameter) => Verbietet oder erlaubt Zugriffe von bestimmten Usern oder Gruppen auf Dateien oder Ordner.

Die Prozedur Get_Group_Name:
1.Parameter: Jeder oder Administratoren, je nach dem, welchen Gruppennamen man benötigt.
2.Parameter: Nummer einer mit Assign zugewiesenen und vorhandenen Datei zum Erzeugen eines Logs, 0 wenn keine Logdatei erstellt werden soll
3.Parameter: Aktuelle Eintragsnummer des Logs (Steht am Ende in Log_Einträge&)

Die Prozedur Set_ACE_IN_DACL:
1.Parameter: Datei- oder Ordnername
2.Parameter: Username oder Gruppe, auf die sich die Zugriffsrechte beziehen.
3.Parameter: +;-;0 (-=Rechte verbieten, +=Rechte erlauben, 0=alles vorhandene löschen)
4.Parameter: Flags als String
Mögliche Flags
- FILE_READ_DATA (Erlaubt Daten aus einem File zu lesen)
- FILE_WRITE_DATA (Erlaubt Daten zu Scheiben)
- FILE_APPEND_DATA (Erlaubt Daten anzuhängen)
- FILE_READ_EA (Erlaubt erweiterte Attibute zu lesen)
- FILE_WRITE_EA (Erlaubt erweiterte Attribute zu schreiben)
- FILE_EXECUTE (Erlaubt eine Datei auszuführen)
- FILE_READ_ATTRIBUTES (Lesen der Fileattribute)
- FILE_WRITE_ATTRIBUTES (Ändern der Fileattribute)
- WRITE_DAC (Ändern der DACL Einträge)
- READ_CONTROL (Lesen der DACL Einträge und Besitzer)
- SYNCHRONIZE (Erlaubt einem FileHandle auf ein Complitition I/O zu warten)
- File_Delete_CHILD (Erlaubt einen Unterordner zu löschen - für Dateien keine Bedeutung)
- ACCESS_SYSTEM_SECURITY (Erlaubt den Zugriff auf den SACL)
- WRITE_OWNER (Eigentümer ändern)
- F_DELETE (Datei löschen)
5.Parameter: Numer einer mit Assign zugewiesenen Datei zum Erzeugen eines Logs, 0 wenn keine Logdatei erstellt werden soll
6.Parameter: Aktuelle Eintragsnummer des Logs (Steht am Ende in Log_Einträge&)

Beispiel für das Einbauen der Include:
 $I DACL_SET.INC
Declare Datei$
Assign #1,"C:FILE_TEST.TXT"
REWRITE #1
Close #1
LET DATEI$=@LoadFile$("Datei auswählen","*.*")
Get_Group_Name "Jeder",1,LOG_EINTRÄGE&
Set_ACE_IN_DACL Datei$,@$(0),"+0","SYNCHRONIZE FILE_WRITE_EA FILE_READ_EA FILE_READ_DATA FILE_WRITE_DATA FILE_APPEND_DATA FILE_EXECUTE FILE_READ_ATTRIBUTES FILE_WRITE_ATTRIBUTES F_DELETE",1,LOG_EINTRÄGE&
Get_Group_Name "Jeder",1,LOG_EINTRÄGE&
Set_ACE_IN_DACL Datei$,@$(0),"-","F_DELETE",1,LOG_EINTRÄGE&
Get_Group_Name "Administratoren",1,LOG_EINTRÄGE&
Set_ACE_IN_DACL Datei$,@$(0),"+","FILE_DELETE_CHILD,READ_CONTROL,ACCESS_SYSTEM_SECURITY,WRITE_OWNER,WRITE_DAC,F_DELETE,SYNCHRONIZE,FILE_WRITE_EA,FILE_READ_EA,FILE_READ_DATA,FILE_WRITE_DATA,FILE_APPEND_DATA,FILE_EXECUTE,FILE_READ_ATTRIBUTES,FILE_WRITE_ATTRIBUTES,F_DELETE",1,LOG_EINTRÄGE&
@ShellExec("C:FILE_TEST.TXT","open",1)
 
28.05.2005  
 



Achtung! Jedes Zugriffsrecht, das einer Gruppe oder einem User nicht erlaubt wurde, wird diesem User automatisch verweigert.
Jedes Recht, das einer Gruppe verboten wird, wird auf jeden Fall jedem User verboten, der Mitglied in dieser Gruppe ist (bis auf den Eigentümer natürlich).
Verbote haben immer Vorrang vor Erlaubnissen. Hat z.B. User X in der Gruppe Hauptbenutzer die Erlaubnis eine Datei zu löschen und wird ihm das Löschen in der Gruppe Jeder verboten, so kann User X die besagte Datei nicht löschen!
Mit wirklichen Verboten sollte deshalb immer sehr sorgsam umgegangen werden und Verbote sollten möglichst besser durch das nicht erlauben von Zugriffen realisiert werden!
 
29.05.2005  
 



Im neuen Download unter diesem Posting können nun GENERIC Rechte in ihre spezifischen Rechte gemappt werden. Die Prozedur, die dazu zur Verfügung steht, heißt
Map_GENERIC.
Diese Prozedur wandelt ein GENERIC Recht in die entsprechenden spezifischen Rechte um und gibt dies als String zurück. Dieser String kann direkt an die Prozedur Set_ACE_IN_DACL übergeben werden.
1.Parameter: GENERIC Rechte als String=>
GENERIC_READ
GENERIC_WRITE
GENERIC_EXECUTE
GENERIC_ALL
2.Parameter: Nummer einer mit Assign zugewiesenen und vorhandenen Datei zum Erzeugen eines Logs, 0 wenn keine Logdatei erstellt werden soll
3.Parameter: Aktuelle Eintragsnummer des Logs (Steht am Ende in Log_Einträge&)

Will hoffen, das alles klappt.

Beispiel:
KompilierenMarkierenSeparieren
 $I DACL_SET.INC
Declare MY_FILE$,MY_RIGHTS$,MY_NAME$
*** LogDatei erzeugen ***
ASSIGN #1,"C:DACL.TXT"
REWRITE #1
Close #1
*** Datei auswählen ***
LET MY_FILE$=@LOADFILE$("Bitte Datei zum Ändern der Zugriffsrechte auswähle","*.*")
*** Zugriffsrechte neu festlegen ***
Map_GENERIC "GENERIC_ALL",1,LOG_EINTRÄGE&  1.Schritt: GENERIC Rechte in spezifische Rechte umwandeln (alle Rechte)
LET MY_RIGHTS$=@$(0)
GetCurrentUser 1,LOG_EINTRÄGE&  2.Schritt: "Current User" ermitteln...
LET MY_NAME$=@$(0)
Set_ACE_IN_DACL MY_FILE$,MY_NAME$,"+0",MY_RIGHTS$,1,LOG_EINTRÄGE&  3.Schritt: Rechte des aktuellen Users auf Vollzugriff ändern - sonstige, in der Datei vorhandene Rechte, löschen.
Map_GENERIC "GENERIC_READ",1,LOG_EINTRÄGE&  1.Schritt: GENERIC Rechte in spezifische Rechte umwandeln (Leserecht)
LET MY_RIGHTS$=@$(0)
GET_Group_Name "Jeder",1,LOG_EINTRÄGE&  2.Schritt: "Gruppennamen von "Jeder" ermitteln...
LET MY_NAME$=@$(0)
Set_ACE_IN_DACL MY_FILE$,MY_NAME$,"+",MY_RIGHTS$,1,LOG_EINTRÄGE&  3.Schritt: Rechte jedes Users Users auf vollen Lesezugriff ändern - sonstige, in der Datei vorhandene Rechte, beibehalten.
@ShellExec("C:DACL.TXT","open",1)

7 kB
Kurzbeschreibung: Include zum Setzen von Dateizugriffsrechten Version 4
Hochgeladen:09.07.2005
Ladeanzahl101
Herunterladen
 
09.07.2005  
 



Es hat sich einiges geändert:
- Die Prozedur MAP_GENERIC gibt es nicht mehr. GENERIC Rechte werden nun direkt gemappt.
- Die Funktion SET_ACE_IN_DACL gibt es nicht mehr, sie wurde durch folgende Funktion ersetzt:
SET_FILE_ACE_IN_DACL
SET_FILE_ACE_IN_DACL setzt den SecurityDescriptor einer Datei oder eines Ordners auf NTFS-Partitionen.
- Zugänglichmachen von Dateien und Ordnern für alle User (z.B. Datenbanken in Mehrbenutzerprogrammen)
- Dateien erzeugen, die nur für einzelne User sichtbar und änderbar sind.
- ...

Desweiteren gibt es jetzt:
SET_REGISTRY_ACE_IN_DACL
- Erzeugen von Registryschlüsseln, die nicht ohne weiteres zu editieren sind.
- Erzeugen von Registryschlüsseln, die nicht ohne weiteres von jedem zu lesen sind.
- Erzeugen von unsichtbaren Registryschlüssel, die nur von einem Systemservice gelesen und beschrieben werden können.
- ....

SET_PROCESS_ACE_IN_DACL
- Verhindern, daß andere Prozesse den eigenen Prozess ohne weiteres ausschalten können.
- Erzeugung eines Serviceprogrammes, das nur vom System beendet werden kann.
- Verhindern, Daß über einen Remote-Thread ein anderer Prozess mit meinen Rechten arbeiten kann.
- ...

Dokumentation der Prozeduren ist im Download enthalten (will hoffen, daß alles geht).

21 kB
Kurzbeschreibung: Version 5 DACL_SET.INC
Hochgeladen:10.09.2005
Ladeanzahl88
Herunterladen
 
10.09.2005  
 



Neue Version:
Leere DACEs (d.h. ohne Zugriffsrechtsflags) werden nun im Security-Descriptor automatisch gelöscht. Vererbung wird noch nicht unterstützt.

27 kB
Kurzbeschreibung: Zugriffsrechte von Objekten setzen, Version 6.1
Hochgeladen:16.12.2005
Ladeanzahl96
Herunterladen
 
15.12.2005  
 



Oben kleines Update gemacht, hatte bei den Prozesse die Deklaration einer Variablen vergessen. Habe die anderen Includes zur Security mit dazugepackt.

Viel Spaß mit dem Code...

Gruß

AH
 
16.12.2005  
 



Werde mich als nächste um die Einbindung der Vererbung kümmern. Da es da auch auf die richtige Sortierung und das auslesen des Headers des Security-Descriptors ankommt (in der WIN32.HLP nicht dokumentiert), ist das noch eine ganze Menge Arbeit. Sollte ich vor Ende des Jahres nicht fertigwerden, werde ich versuchen, die Datei mal von irgendwo anders aus zu posten.

PS: Das Erstellen komplett neuer ACLs z.B. für eigene Dateien und Registryschlüssel (Parameter 0) und das Hinzufügen von ACEs im Prozeßbereich funktioniert schon perfekt - zum hinzufügen von ACEs zu vorhandenen ACLs in der Registry und im Dateisystem würde ich die Sache so aber noch nicht verwenden.
 
17.12.2005  
 



Neue Version:
1.) Vererbung wird unterstützt.
2.) Automatische Vererbung wird unterstützt.
3.) Sortierreihenfolge der ACEs wurde auf Windows2000/XP Standard angepaßt.
4.) Include wurde auf ca. ein fünftel der vorherigen Größe gekürzt.

24 kB
Kurzbeschreibung: Includes zum Setzen von Zugriffsrechten in einem Security-Descriptor Version 7
Hochgeladen:20.12.2005
Ladeanzahl152
Herunterladen
 
20.12.2005  
 



Nochmals Änderung:
- Ein Bug wurde beseitigt
- Auslesen ist nun möglich:
Unten Quelltextbeispiel (keine Angst, ändert nichts!)
 $I DACL_SET.INC
DEF @GetSysColor(1) !"USER32","GetSysColor"
DEF @GetDlgCtrlID(1) !"USER32","GetDlgCtrlID"
DEF @ButtonClicked(1) @GetDlgCtrlID(@&(1))=-%MENUITEM
Declare Auslesen&,Ordnername&,Ordnername$,ACE_MERKER&,Rechte_ART&,Select$
Declare 1&,2&,4&,8&,10&,20&,40&,80&,100&,10000&,20000&,40000&,80000&,100000&,20000000&,40000000&,80000000&,10000000&
Declare Beschränkter&,Ererbt&,Vererbungsart&,AUSWAHL$
Declare Vererbungsart&,Vererbt&,Username&,Automatische_Vererbung&,Block&,EIGENTÜMER&,ACE_NUMMER&
Declare Gewählter_ACE$,USERS$,Gültig&
Declare Text#,Tool#,Tool&
dim Text#,262
dim Tool#,40
Windowstyle 31+512
Windowtitle "Rechte einer Datei auslesen"
Window 0,0-640,440
SETTRUECOLOR 1
CLS @GETSYSCOLOR(15)
USERMESSAGES $10
Usefont "Arial",17,5,1,0,0
SetDialogFont  %FONT
LET Ordnername&=@Control("STATIC","Kein Ordner ausgewählt!",$40000000+$10000000+$1000,110,5,505,20,%HWND,5000,%HINSTANCE)
LET Auslesen&=@CREATEBUTTON(%HWND,"Ordner wählen",5,5,100,25)
@Createtext(%HWND,"Eigentümer:",5,65,60,25)
LET EIGENTÜMER&=@CREATECHOICEBOX(%HWND,"",70,60,150,100)
LET Automatische_Vererbung&=@CreateCheckBox(%HWND,"Vererbbare Rechte automatisch weitergeben",5,30,300,25)
LET Block&=@CreateCheckBox(%HWND,"Vererbung abblocken",305,30,120,25)
LET Ererbt&=@Control("STATIC","",$40000000+$10000000+$1000,440,30,150,20,%HWND,5002,%HINSTANCE)
@Createtext(%HWND,"ACE auswählen:",300,65,100,25)
LET ACE_NUMMER&=@Control("ComboBox","",$40000000+$10000000+$200000+$100000+$3+$200,380,60,90,200,%HWND,5001,%HINSTANCE)
@Createtext(%HWND,"User/Gruppe:",5,95,70,25)
LET Beschränkter&=@CREATECHOICEBOX(%HWND,"",75,90,150,100)
@Createtext(%HWND,"Art des Rechtes:",250,95,100,25)
LET Rechte_ART&=@CREATECHOICEBOX(%HWND,"",350,90,150,100)
@AddChoice(Rechte_ART&,"Erlaubnis")
@AddChoice(Rechte_ART&,"Verbot")
@AddChoice(Rechte_ART&,"Konnte nicht gelesen werden")
LET Vererbungsart&=@CREATECHOICEBOX(%HWND,"",350,120,205,100)
@AddChoice(Vererbungsart&,"Keine Vererbung")
@AddChoice(Vererbungsart&,"Vererbung an Dateien")
@AddChoice(Vererbungsart&,"Vererbung an Unterordner")
@AddChoice(Vererbungsart&,"Vererbung an Dateien und Unterordner")
LET gültig&=@CREATECHOICEBOX(%HWND,"",350,150,245,100)
@AddChoice(gültig&,"Gültig für aktuellen Ordner")
@AddChoice(gültig&,"Gültig nur für Kindobjekte")
Let 1&=@CreateCheckBox(%HWND,"Unterordner listen",5,125,120,25)
Let 2&=@CreateCheckBox(%HWND,"Dateien erstellen",5,150,120,25)
Let 4&=@CreateCheckBox(%HWND,"Ordner erstellen",5,175,120,25)
Let 8&=@CreateCheckBox(%HWND,"Erweiterte Attribute lesen",5,200,150,25)
Let 10&=@CreateCheckBox(%HWND,"Erweiterte Attribute schreiben",5,225,150,25)
Let 20&=@CreateCheckBox(%HWND,"Ordner durchsuchen",5,250,150,25)
Let 40&=@CreateCheckBox(%HWND,"Unterordner löschen",5,275,150,25)
Let 80&=@CreateCheckBox(%HWND,"Attribute lesen",5,300,150,25)
Let 100&=@CreateCheckBox(%HWND,"Attribute schreiben",5,325,150,25)
LET 10000&=@CreateCheckBox(%HWND,"Ordner löschen",200,125,120,25)
LET 20000&=@CreateCheckBox(%HWND,"Zugriffsrechte lesen",200,150,150,25)
LET 40000&=@CreateCheckBox(%HWND,"Zugriffsrechte schreiben",200,175,150,25)
LET 80000&=@CreateCheckBox(%HWND,"Eigentümer ändern",200,200,200,25)
LET 100000&=@CreateCheckBox(%HWND,"Auf Rückgabe des Handles warten",200,225,200,25)
LET 80000000&=@CreateCheckBox(%HWND,"Vererbtes generelles Leserecht",200,275,200,25)
LET 40000000&=@CreateCheckBox(%HWND,"Vererbtes generelles Schreibrecht",200,300,200,25)
LET 20000000&=@CreateCheckBox(%HWND,"Vererbtes generelles Recht zum Durchsuchen/Ausführen",200,325,290,25)
LET 10000000&=@CreateCheckBox(%HWND,"Vererbter genereller Vollzugriff",200,350,200,25)
LET Tool&=@control("tooltips_class32","",$d0000000,0,0,0,0,%HWND,0,%hinstance)
long Tool#,0=40 ------Größe der TOOLINFO-Struktur
long Tool#,4=17 ------Flags
long Tool#,36=Text# --Bereichsvariable mit String
String Text#,0="Ordner wählen und hier einen ACE auswählen, alles andere so lassen!!!" ---Text des 1.Tooltips
long Tool#,12=ACE_NUMMER&
@Sendmessage(Tool&,1028,0,Tool#) ------Tipp initialisieren
String Text#,0="Hier einen Ordner wählen und dann ACE auswahlen, alles andere so lassen!!!" ---Text des 1.Tooltips
long Tool#,12=Auslesen&
@Sendmessage(Tool&,1028,0,Tool#) ------Tipp initialisieren
Dispose Text#
Dispose Tool#
@SetFocus(%HWND)

While %UMESSAGE<>$10

    Waitinput

    IF @ButtonClicked(Auslesen&)

        LET Ordnername$=@ChooseDir$("Bitte Ordner zum Auslesen der Rechte auswählen")

        IF @AND(@RIGHT$(Ordnername$,1)="",@LEN(Ordnername$)>3)

            LET ORDNERname$=@LEFT$(Ordnername$,@LEN(Ordnername$)-1)

        endif

        Settext Ordnername&,Ordnername$
        Set_File_ACE_IN_DACL Ordnername$,"Administrator","","WRITE_DAC",0,0
        @Sendmessage(EIGENTÜMER&,$14B,0,0)
        @AddChoice(EIGENTÜMER&,ACE$[0,1])
        @Sendmessage(EIGENTÜMER&,$14E,0,0)
        @Sendmessage(ACE_NUMMER&,$14B,0,0)

        IF @VAL(ACE$[0,0]) | $400 = @VAL(ACE$[0,0])

            SetCheck Automatische_Vererbung&,1

        else

            SetCheck Automatische_Vererbung&,0

        endif

        IF @VAL(ACE$[0,0]) | $1000 = @VAL(ACE$[0,0])

            SetCheck Block&,1

        else

            SetCheck Block&,0

        endif

        LET ACE_MERKER&=1

        While @AND(ACE_MERKER&<@VAL(ACE$[0,2])+1,ACE_MERKER&<=ACE_ARRAY_GRÖßE%)

            @AddChoice(ACE_NUMMER&,@STR$(ACE_MERKER&))
            LET ACE_MERKER&=ACE_MERKER&+1

        wend

        IF @VAL(ACE$[0,2])+1>ACE_ARRAY_GRÖßE%

            @Messagebox("Es konnten nicht alle ACEs ausgelesen werden!","ACE-Array zu klein dimensioniert!",16)

        endif

    Endif

    IF @Gettext$(ACE_NUMMER&)=""

        @Sendmessage(ACE_NUMMER&,$14E,0,0)

    endif

    IF Gewählter_ACE$<>@Gettext$(ACE_NUMMER&)

        let Gewählter_ACE$=@Gettext$(ACE_NUMMER&)
        LET ACE_MERKER&=@VAL(Gewählter_ACE$)

        IF @INSTR(ACE$[ACE_MERKER&,3]+",",USERS$)=0

            @ADDCHOICE(Beschränkter&,ACE$[ACE_MERKER&,3])
            LET USERS$=USERS$+ACE$[ACE_MERKER&,3]+","

        endif

        @SENDMESSAGE(Beschränkter&,$14E,@Sendmessage(Beschränkter&,$158,-1,@ADDR(ACE$[ACE_MERKER&,3])),0)

        IF ACE$[ACE_MERKER&,1]="0"

            Let Select$="Erlaubnis"

        Elseif ACE$[ACE_MERKER&,1]="1"

            Let Select$="Verbot"

        Else

            Let Select$="Konnte nicht gelesen werden"

        endif

        @SENDMESSAGE(Rechte_ART&,$14E,@Sendmessage(Rechte_ART&,$158,-1,@ADDR(Select$)),0)

        IF @OR(@VAL(ACE$[ACE_MERKER&,4]),$1)=@VAL(ACE$[ACE_MERKER&,4])

            Setcheck 1&,1

        else

            Setcheck 1&,0

        endif

        IF @OR(@VAL(ACE$[ACE_MERKER&,4]),$2)=@VAL(ACE$[ACE_MERKER&,4])

            Setcheck 2&,1

        else

            Setcheck 2&,0

        endif

        IF @OR(@VAL(ACE$[ACE_MERKER&,4]),$4)=@VAL(ACE$[ACE_MERKER&,4])

            Setcheck 4&,1

        else

            Setcheck 4&,0

        endif

        IF @OR(@VAL(ACE$[ACE_MERKER&,4]),$8)=@VAL(ACE$[ACE_MERKER&,4])

            Setcheck 8&,1

        else

            Setcheck 8&,0

        endif

        IF @OR(@VAL(ACE$[ACE_MERKER&,4]),$10)=@VAL(ACE$[ACE_MERKER&,4])

            Setcheck 10&,1

        else

            Setcheck 10&,0

        endif

        IF @OR(@VAL(ACE$[ACE_MERKER&,4]),$20)=@VAL(ACE$[ACE_MERKER&,4])

            Setcheck 20&,1

        else

            Setcheck 20&,0

        endif

        IF @OR(@VAL(ACE$[ACE_MERKER&,4]),$40)=@VAL(ACE$[ACE_MERKER&,4])

            Setcheck 40&,1

        else

            Setcheck 40&,0

        endif

        IF @OR(@VAL(ACE$[ACE_MERKER&,4]),$80)=@VAL(ACE$[ACE_MERKER&,4])

            Setcheck 80&,1

        else

            Setcheck 80&,0

        endif

        IF @OR(@VAL(ACE$[ACE_MERKER&,4]),$100)=@VAL(ACE$[ACE_MERKER&,4])

            Setcheck 100&,1

        else

            Setcheck 100&,0

        endif

        IF @OR(@VAL(ACE$[ACE_MERKER&,4]),$10000)=@VAL(ACE$[ACE_MERKER&,4])

            Setcheck 10000&,1

        else

            Setcheck 10000&,0

        endif

        IF @OR(@VAL(ACE$[ACE_MERKER&,4]),$20000)=@VAL(ACE$[ACE_MERKER&,4])

            Setcheck 20000&,1

        else

            Setcheck 20000&,0

        endif

        IF @OR(@VAL(ACE$[ACE_MERKER&,4]),$40000)=@VAL(ACE$[ACE_MERKER&,4])

            Setcheck 40000&,1

        else

            Setcheck 40000&,0

        endif

        IF @OR(@VAL(ACE$[ACE_MERKER&,4]),$80000)=@VAL(ACE$[ACE_MERKER&,4])

            Setcheck 80000&,1

        else

            Setcheck 80000&,0

        endif

        IF @OR(@VAL(ACE$[ACE_MERKER&,4]),$100000)=@VAL(ACE$[ACE_MERKER&,4])

            Setcheck 100000&,1

        else

            Setcheck 100000&,0

        endif

        IF @OR(@VAL(ACE$[ACE_MERKER&,4]),$10000000)=@VAL(ACE$[ACE_MERKER&,4])

            Setcheck 10000000&,1

        else

            Setcheck 10000000&,0

        endif

        IF @OR(@VAL(ACE$[ACE_MERKER&,4]),$20000000)=@VAL(ACE$[ACE_MERKER&,4])

            Setcheck 20000000&,1

        else

            Setcheck 20000000&,0

        endif

        IF @OR(@VAL(ACE$[ACE_MERKER&,4]),$40000000)=@VAL(ACE$[ACE_MERKER&,4])

            Setcheck 40000000&,1

        else

            Setcheck 40000000&,0

        endif

        IF @OR(@VAL(ACE$[ACE_MERKER&,4]),$80000000)=@VAL(ACE$[ACE_MERKER&,4])

            Setcheck 80000000&,1

        else

            Setcheck 80000000&,0

        endif

        IF @VAL(ACE$[ACE_MERKER&,2]) | $10 = @VAL(ACE$[ACE_MERKER&,2])

            Settext Ererbt&,"Rechte sind ererbt"

        else

            Settext Ererbt&,"Rechte sind nicht ererbt"

        endif

        IF @VAL(ACE$[ACE_MERKER&,2]) | $3 = @VAL(ACE$[ACE_MERKER&,2])

            LET AUSWAHL$="Vererbung an Dateien und Unterordner"

        Elseif @VAL(ACE$[ACE_MERKER&,2]) | $1 = @VAL(ACE$[ACE_MERKER&,2])

            LET AUSWAHL$="Vererbung an Dateien"

        Elseif @VAL(ACE$[ACE_MERKER&,2]) | $2 = @VAL(ACE$[ACE_MERKER&,2])

            LET AUSWAHL$="Vererbung an Unterordner"

        Else

            LET AUSWAHL$="Keine Vererbung"

        endif

        @SENDMESSAGE(Vererbungsart&,$14E,@Sendmessage(Vererbungsart&,$158,-1,@ADDR(Auswahl$)),0)

        IF @VAL(ACE$[ACE_MERKER&,2]) | $8 = @VAL(ACE$[ACE_MERKER&,2])

            LET AUSWAHL$="Gültig nur für Kindobjekte"

        Else

            LET AUSWAHL$="Gültig für aktuellen Ordner"

        endif

        @SENDMESSAGE(Gültig&,$14E,@Sendmessage(Gültig&,$158,-1,@ADDR(Auswahl$)),0)

    endif

wend


Viel Spaß damit, aber erst neue Version herunterladen!

31 kB
Kurzbeschreibung: Zugriffsrechte von Objekten setzen, Version 8.3
Hochgeladen:25.12.2005
Ladeanzahl135
Herunterladen
 
22.12.2005  
 



Habe mir beim Einbau der automatischen Vererbung einen ganz dicken Bug eingebaut (rechte wurde immer ererbt, auch wenn das im original nicht so eingestellt war). Ich will hoffen, das der Fehler jetzt beseitigt ist. Habe einen Beitrag weiter oben ein Update gemacht. Wie man im Beispiel oben schon sehen kann, ist für die Zukunft auch das Abspeichern des ACE Arrays und damit das editieren von Rechten mit der DACL_SET.INC geplant.

Der Einbau des Setzens von Token-Zugriffsrechten ist ebenfalls noch geplannt. Threads werden auch kommen.
 
23.12.2005  
 



Nochmals Update gemacht (Version 8.2) und 2 Probleme beseitigt:

1.) Parameter U funzte nicht (falschen Flag angegeben)
2.) CreateFile benötigt anscheinend immer das Zugriffsrecht SYNCRONIZE. Es reichen die Rechte WRITE_DAC und READ_CONTROL also zum Erhalten eines Filehandles nicht aus. Das heißt im Klartext:
Obwohl man Eigentümer eines Objektes ist, kann man mit SetSecurityInfo die Zugriffsrechte nicht ändern, wenn man das Recht SYNCRONIZE nicht zusätzlich besitzt.
Also => neue APIs Ge-/SetNamedSecurityInfo wurde eingebaut, dann gehts bei Dateien mit weniger Rechten...
 
24.12.2005  
 




Michael
Wodrich
Download klappt nicht...
 
Programmieren, das spannendste Detektivspiel der Welt.
25.12.2005  
 




Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

9.895 Betrachtungen

Unbenanntvor 0 min.
Uwe Lang17.09.2022
Rc31.01.2022
Manfred Barei20.03.2020
p.specht30.03.2017
Mehr...

Themeninformationen

Dieses Thema hat 2 Teilnehmer:

unbekannt (16x)
Michael Wodrich (2x)


Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie