Forum | | | | | allô Profaner...
j'ai avant, mich bientôt la fois quelque chose mäher avec qui NT/NTFS File-Security trop beschäftigen - Montrer et changement de Eigentümern et son Zeug zum Beispiel. Hat quelqu'un so quelque chose déjà la fois gemacht (avec Security Descriptors gearbeitet) ou bien gibt es intérêt à dem Thema? |
| | | | |
| | | eh bien sur Linux ist alles oui zum Glück sur bashscripz realisierbar - là isses alles net so compliqué - mais irgendwie sicherer.
intéressant wäre z.B. comment une sur einem Client-Laufende-Software sich comme Benutzer sur dem Server s'inscrire peux (vorrausgesetzt Username+Mot de passe vorhanden!) um Fichiers je pour Rechtevergebung sur dem Server trop behandeln.
Salve. |
| | | | |
| | | Moin IF...
Sich irgendwo comme anderer User anzumelden (et sei es seulement avec einem individuel Prozess), pourrait eigentlich ne...aucune Problem son (siehe API Library). malheureusement habe je ne...aucune privates Netzwerk et peux c'est pourquoi en supplément rien entwickeln - allerhöchstens mitdenken. qui Domain (Computername) muss incidemment aussi encore bekannt son. cela changement des Security Descriptors ist ensuite mais gar pas plus notwendig - et justement cela voudrais je oui. je voudrais Files et Registry-Keys seulement pour bestimmte User et Gruppen freigeben ou bien den propriétaire sur (une peut-être. modifié) Loginnamen anpassen.
Viele Installer échouer chez Usern avec eingeschränkten Rechten, weil cet chez qui installation eines Programmes pas qui Zugriffsrechte pour qui Files des installierten Programmes anpassen. Installiert un Admin pour une User avec eingeschränkten Rechten un Programme, funktioniert cet ensuite peut-être. pas richtig, weil Files pas gelesen ou bien geschrieben volonté peut - un Problem, à cela à peine un Programmierer denkt.
qui Zugriff sur den Security Descriptor scheint aussi sous Windows pas so compliqué trop son - ist wesentlich besser dokumentiert comme qui Aktivierung de Privilegien et qui LSA - et beides ist bereits dans Profan mise en œuvre.
quand même scheint es à peine ou bien gar aucun Source dans irgendeiner Programmiersprache sur cela Changement de Security Descriptors trop donner - cela stört mich quelque chose et cela veux je changement...
´ |
| | | | |
| | | Du vouloir alors une set|getFileOwner erstellen - um avant einem fopen un getFileOwner==actualOwner abprüfen trop peut?
Wäre très intéressant...
Salve. |
| | | | |
| | | allô IF...
oui, oui c'est ca. seulement le moi avec cette devoir eigentlich pas viel trop 1faire habe - cela übernimmt cela Betriebssystem pour mich, vorausgesetzt il y a une NTFS formatierte Patition (chez XP eigentlich déjà presque Standard).
dans qui Registry funktioniert cela sur qui gleiche Weise. aussi ici peut Keys vers Fremdzugriff geschützt volonté. chez einigen Systemkeys sous HKEY_LOCAL_MACHINE ist es standardmäßig so, qui eigentlich seulement Admins puis zugreifen peut.
Comme je le disais - wäre cela pour Files gelöst, pourrait on cela pour alle anderen Bereiche des Betriebsystems aussi anwenden. là je ici seulement bedinngt sur NTFS Partitionen verfüge, bräuchte je peut-être. un jusqu'à deux gens, qui quelque chose enger avec mir zusammenarbeiten et 2000 ou bien XP avec NTFS avons. Oberflächliche Kenntnisse, comment cet Betriebssysteme marcher, sollte on déjà mitbringen.
qui Delphianer avons quelque chose ähnliches versucht - ist là scheinbar wohl kläglich dans qui Hose gegangen. je denke la fois, wir kriegen cela geregelt. |
| | | | |
| | | tu sais bien - wenns quoi trop testen gibt...
Salve. |
| | | | |
| | CB | allô, Andreas!
suis volontiers aussi dabei. XP - 2000 - NT, aussi im Netzwerk. Tät mich aussi intéresser!
Ciao, Christian |
| | | | |
| | | allô son beiden...
Bestens - sobald je wieder voll à meinen Internet-PC peux, gehts oui c'est ca ici à l'attaque. cela peux encore jusque 14 Tagen dauern, c'est pourquoi quelque chose patience.
j'ai avant, ähnlich comment chez qui LSA-API et dem Aktivieren de Privilegien, ici très tief dans cela Herz chaque Windows NT-basieten Betriebssystems trop blicken.
si dabei quelque chose vernünftiges herauskommt, wird cela Ergebnis pas seulement pour Files gelten, mais sur alle Bereiche eines NT-basierten Systems zutreffen, qui avec ACCESS_MASK Flags travailler - qui Registry sous anderem, um seulement un Beispiel de vielen trop appeler.
je suis mich déjà sur qui Zusammenarbeit avec euch et hoffe, qui son mir aussi quelque chose sur qui Sprünge aider peut, wenns chez mir le crochet devrait... |
| | | | |
| | | allô son beiden (et dem reste ebenso)...
OK, maintenant attraper wir la fois entier lente et simple à:
d'abord hole je mir den Security Descriptor - alors encore rien besonderes.
quelle Rückmeldungen gibts - quoi zeigt qui Ausgabebox à - ist irgendetwas unschlüssig? KompilierenMarqueSéparationWindowstyle 31
Windowtitle "File Security"
Window 0,0-640,440
DEF @GetFileSecurity(5) !"ADVAPI32","GetFileSecurityA"
DEF @GetLastError(0) !"KERNEL32","GetLastError"
DEF @LookupPrivilegeName(4)!"advapi32","LookupPrivilegeNameA" Ermittelt aus dem Luid eines Privilegs dessen Namen.
DEF @LookupPrivilegeValue(3) !"advapi32","LookupPrivilegeValueA" Ermittelt aus dem Namen eines Privilegs dessen Luid.
DEF @OpenProcessToken(3) !"advapi32","OpenProcessToken" Öffnet Einstellprozess.
DEF @AdjustTokenPrivileges(6) !"advapi32","AdjustTokenPrivileges" Stellt Privilegien ein.
DEF @GetCurrentProcess(0) !"kernel32","GetCurrentProcess" Ermittel das Handle des aktiven Prozesses.
DEF @CloseHandle(1) !"kernel32","CloseHandle" Schließt ein Handle (Programm).
Def @GetVolumeInformation(8) !"KERNEL32","GetVolumeInformationA"
Declare Filename$,Fehler&,SECURITY_INFORMATION#,PSECURITY_DESCRIPTOR#,Needed#
Declare NewState#,token#,Privileg#,Luid#,System$
Declare Laufwerk$,Label#,LFLAGS#,DAT#
LET Filename$=@LOADFILE$("Datei laden","Alle Dateien |*.*|Textdateien|*.TXT")
IF Filename$<>""
CLEARLIST
LET LAUFWERK$=@LEFT$(Filename$,3)
DIM Label#,256
DIM LFLAGS#,4
DIM DAT#,256
ADDSTRING "Gewählte Datei="+Filename$
ADDSTRING "Letzter API-Fehler="+@STR$(@GetLastError())
LET FEHLER&=@GetVolumeInformation(@ADDR(Laufwerk$),Label#,256,0,0,LFlags#,DAT#,256)
ADDSTRING "Rückgabe von GetVolumeInformation="+@STR$(Fehler&)
ADDSTRING "Letzter API-Fehler="+@STR$(@GetLastError())
ADDSTRING "Laufwerksflags="+@BIN$(@LONG(LFLAGS#,0))
IF @LONG(LFLAGS#,0) | $8 = @LONG(LFLAGS#,0)
ADDSTRING "Zugriff ist einschränkbar"
else
ADDSTRING "Zugriff ist nicht einschränkbar"
endif
ADDSTRING "Ausgelesene Partition="+@String$(Dat#,0)
dim token#,4
DIM NewState#,16
DIM Luid#,8
DIM Privileg#,33
ADDSTRING "Windowsversion="+$WINVER
Long NewState#,0=1 Nur ein Privileg soll geändert werden
Long NewState#,12=$00000002 Das Privileg soll eingeschaltet werden
LET FEHLER&=@OpenProcessToken(@GetCurrentProcess(),$0020 | $0008,Token#)
ADDSTRING "Rückgabe von OpenProcessToken="+@STR$(Fehler&)
ADDSTRING "Letzter API-Fehler="+@STR$(@GetLastError())
STRING Privileg#,0="SeSecurityPrivilege"
LET Fehler&=@LookupPrivilegeValue(System$,Privileg#,LUID#)
ADDSTRING "Rückgabe von LookupPrivilegeValue="+@STR$(Fehler&)
ADDSTRING "Letzter API-Fehler="+@STR$(@GetLastError())
Byte NewState#,4=@Byte(Luid#,0)
Byte NewState#,5=@Byte(Luid#,1)
Byte NewState#,6=@Byte(Luid#,2)
Byte NewState#,7=@Byte(Luid#,3)
Byte NewState#,8=@Byte(Luid#,4)
Byte NewState#,9=@Byte(Luid#,5)
Byte NewState#,10=@Byte(Luid#,6)
Byte NewState#,11=@Byte(Luid#,7)
Let Fehler&=@AdjustTokenPrivileges(@LONG(Token#,0),0,NewState#,0,0,0)
ADDSTRING "Rückgabe von AdjustTokenPrivileges="+@STR$(Fehler&)
ADDSTRING "Letzter API-Fehler="+@STR$(@GetLastError())
DIM SECURITY_INFORMATION#,4
DIM PSECURITY_DESCRIPTOR#,1024
DIM Needed#,4
LONG SECURITY_INFORMATION#,0=$1 | $2 | $4
LET Fehler&=@GetFileSecurity(@ADDR(Filename$),SECURITY_INFORMATION#,PSECURITY_DESCRIPTOR#,1024,Needed#)
ADDSTRING "Rückgabe von GetFileSecurity="+@STR$(Fehler&)
ADDSTRING "Letzter API-Fehler="+@STR$(@GetLastError())
@CloseHandle(@LONG(Token#,0))
Dispose Luid#
Dispose Privileg#
Dispose NewState#
Dispose token#
Dispose Needed#
Dispose PSECURITY_DESCRIPTOR#
Dispose SECURITY_INFORMATION#
Dispose Label#
Dispose LFlags#
DISPOSE DAT#
@Listbox$("API Rückgaben",1)
Endif
While 0=0
Waitinput
Wend
Fragen trop irgendwelchen Sachen? Gibt es irgendo 997 Fehlermeldungen? peux sich cela quelqu'un expliquer??? |
| | | | |
| | Rolf Koch | Hi AH hab simple la fois ne *.txt Dossier gewählt.
chez mir venez pour LookupPrivilegeValue=1 qui Wert 997. expliquer peux je ca mais pas, là je keinen Schimmer en habe
Rolf |
| | | | |
| | | Hey Rolf...
Scheint mais quand même trop marcher => Rückmeldung ist oui 1. comment siehts avec den anderen Rückmeldungen aus?
but qui Kiste = je veux chez qui installation eines Programms festlegen peut, quelle User dans quel Art et Weise Zugriff sur qui installierten Fichiers avons. normalement wird qui Zugriff de übergeordneter Stelle vererbt. cela peux chez eingeschränkten Rechten trop entier erheblichen Problemen mener... |
| | | | |
| | Rolf Koch | alors sieht chez mir so aus: KompilierenMarqueSéparation et là je trop fainéant suis alles abzutippen, quoi dans qui liste steht, habe je Deinen Code un bisschen um Arbeitselemente erweitert KompilierenMarqueSéparationWindowstyle 31
Windowtitle "File Security"
Fenêtre 0,0-640,440
DEF @GetFileSecurity(5) !"ADVAPI32","GetFileSecurityA"
DEF @GetLastError(0) !"KERNEL32","GetLastError"
DEF @LookupPrivilegeName(4)!"advapi32","LookupPrivilegeNameA" Ermittelt aus dem Luid eines Privilegs dessen Namen.
DEF @LookupPrivilegeValue(3) !"advapi32","LookupPrivilegeValueA" Ermittelt aus dem Namen eines Privilegs dessen Luid.
DEF @OpenProcessToken(3) !"advapi32","OpenProcessToken" Öffnet Einstellprozess.
DEF @AdjustTokenPrivileges(6) !"advapi32","AdjustTokenPrivileges" Stellt Privilegien un.
DEF @GetCurrentProcess(0) !"kernel32","GetCurrentProcess" Ermittel cela Handle des aktiven Prozesses.
DEF @CloseHandle(1) !"kernel32","CloseHandle" Schließt un Handle (Programme).
Def @GetVolumeInformation(8) !"KERNEL32","GetVolumeInformationA"
Déclarer Filename$,Fehler&,SECURITY_INFORMATION#,PSECURITY_DESCRIPTOR#,Needed#
Déclarer NewState#,token#,Privileg#,Luid#,System$
Déclarer Laufwerk$,Label#,LFLAGS#,DAT#
DECLARE LISTBOX&,TOCLIP&,TOCLIP$
LISTBOX&=CREATELISTBOX(%HWND,»,5,5,500,300)
TOCLIP&=CREATEBUTTON(%HWND,"CLIPBOARD",5,320,120,18)
LET Filename$=@LOADFILE$("Datei laden","Alle Fichiers |*.*|Textdateien|*.TXT")
IF Filename$<>»
CLEARLIST
LET LAUFWERK$=@LEFT$(Filename$,3)
DIM Label#,256
DIM LFLAGS#,4
DIM DAT#,256
ADDSTRING "Gewählte Datei="+Filename$
ADDSTRING "Letzter API-Fehler="+@STR$(@GetLastError())
LET FEHLER&=@GetVolumeInformation(@ADDR(Laufwerk$),Label#,256,0,0,LFlags#,DAT#,256)
ADDSTRING "Rückgabe de GetVolumeInformation="+@STR$(Fehler&)
ADDSTRING "Letzter API-Fehler="+@STR$(@GetLastError())
ADDSTRING "Laufwerksflags="+@BIN$(@LONG(LFLAGS#,0))
IF @LONG(LFLAGS#,0) | $8 = @LONG(LFLAGS#,0)
ADDSTRING "Zugriff ist einschränkbar"
d'autre
ADDSTRING "Zugriff ist pas einschränkbar"
endif
ADDSTRING "Ausgelesene Partition="+@String$(Dat#,0)
dim token#,4
DIM NewState#,16
DIM Luid#,8
DIM Privileg#,33
ADDSTRING "Windowsversion="+$WINVER
Long NewState#,0=1 seulement un Privileg soll geändert volonté
Long NewState#,12=$00000002 cela Privileg soll eingeschaltet volonté
LET FEHLER&=@OpenProcessToken(@GetCurrentProcess(),$0020 | $0008,Token#)
ADDSTRING "Rückgabe de OpenProcessToken="+@STR$(Fehler&)
ADDSTRING "Letzter API-Fehler="+@STR$(@GetLastError())
STRING Privileg#,0="SeSecurityPrivilege"
LET Fehler&=@LookupPrivilegeValue(System$,Privileg#,LUID#)
ADDSTRING "Rückgabe de LookupPrivilegeValue="+@STR$(Fehler&)
ADDSTRING "Letzter API-Fehler="+@STR$(@GetLastError())
Byte NewState#,4=@Byte(Luid#,0)
Byte NewState#,5=@Byte(Luid#,1)
Byte NewState#,6=@Byte(Luid#,2)
Byte NewState#,7=@Byte(Luid#,3)
Byte NewState#,8=@Byte(Luid#,4)
Byte NewState#,9=@Byte(Luid#,5)
Byte NewState#,10=@Byte(Luid#,6)
Byte NewState#,11=@Byte(Luid#,7)
Laisser Fehler&=@AdjustTokenPrivileges(@LONG(Token#,0),0,NewState#,0,0,0)
ADDSTRING "Rückgabe de AdjustTokenPrivileges="+@STR$(Fehler&)
ADDSTRING "Letzter API-Fehler="+@STR$(@GetLastError())
DIM SECURITY_INFORMATION#,4
DIM PSECURITY_DESCRIPTOR#,1024
DIM Needed#,4
LONG SECURITY_INFORMATION#,0=$1 | $2 | $4
LET Fehler&=@GetFileSecurity(@ADDR(Filename$),SECURITY_INFORMATION#,PSECURITY_DESCRIPTOR#,1024,Needed#)
ADDSTRING "Rückgabe de GetFileSecurity="+@STR$(Fehler&)
ADDSTRING "Letzter API-Fehler="+@STR$(@GetLastError())
@CloseHandle(@LONG(Token#,0))
MOVELISTTOLIST(LISTBOX&)
Dispose Luid#
Dispose Privileg#
Dispose NewState#
Dispose token#
Dispose Needed#
Dispose PSECURITY_DESCRIPTOR#
Dispose SECURITY_INFORMATION#
Dispose Label#
Dispose LFlags#
DISPOSE DAT#
Endif
Tandis que 0=0
Waitinput
IF GETFOCUS(TOCLIP&)
CLEARCLIP
CLEAR TOCLIP$
TOCLIP$=GETSTRING$(LISTBOX&,0)
WHILELOOP GETCOUNT(LISTBOX&)
TOCLIP$=TOCLIP$+CHR$(10)+GETSTRING$(LISTBOX&,&LOOP)
WEND
PUTCLIP TOCLIP$
ENDIF
Wend
Rolf |
| | | | |
|
répondreOptions du sujet | 5.701 Views |
Themeninformationencet Thema hat 6 participant: |