Foro | | | | | ¡Hola Profaner...
Yo habe antes, mich demnächst veces algo mäher con el NT/NTFS File-Security a beschäftigen - Mostrar y ändern de Eigentümern y son Zeug para Ejemplo. Sombrero alguien así algo ya veces gemacht (con Security Descriptors gearbeitet) oder hay Interesse a el Thema? |
| | | | |
| | | Nun en Linux es alles sí para Glück encima bashscripz realisierbar - como isses alles net así kompliziert - aber irgendwie sicherer.
Interessant wäre z.B. como una en una Client-Laufende-Software se como Benutzer en el Server registro kann (vorrausgesetzt Username+Contraseña disponible!) en Archivos je después de Rechtevergebung en el Server a behandeln.
Salve. |
| | | | |
| | | Moin IF...
Sich irgendwo como otro User anzumelden (y sei lo sólo una individual Prozess), dürfte eigentlich kein Problema ser (siehe API Library). Leider Yo kein privates Netzwerk y kann deshalb dazu nichts entwickeln - allerhöchstens mitdenken. El Domain (Computername) muss de paso auch todavía bekannt ser. Das ändern des Security Descriptors es entonces aber nada mehr notwendig - y gerade el möchte Yo sí. Yo möchte Files y Registry-Keys sólo para cierto User y Gruppen liberación oder el Eigentümer en (una evtl. geänderten) Loginnamen adaptar.
Viele Installer scheitern en Usern con eingeschränkten Rechten, porque esta en Installation uno Programmes no el Zugriffsrechte para el Files des installierten Programmes adaptar. Installiert una Admin para una User con eingeschränkten Rechten una Programa, funktioniert dieses entonces evtl. no correcto, porque Files no gelesen oder geschrieben voluntad puede - una Problema, a el kaum una Programmierer denkt.
Der Zugriff en el Security Descriptor scheint auch bajo Windows no así kompliziert a ser - es wesentlich mejor dokumentiert como el Aktivierung de Privilegien y el LSA - y beides es ya en Profano umgesetzt.
Trotzdem scheint lo kaum oder gar no Fuente en irgendeiner Lenguaje de programación encima el Cambio de Security Descriptors a geben - el stört mich algo y el voluntad Yo ändern...
´ |
| | | | |
| | | Usted möchtest also una set|getFileOwner redactar - en antes una fopen una getFileOwner==actualOwner abprüfen a puede?
Wäre muy interessant...
Salve. |
| | | | |
| | | ¡Hola IF...
Sí, genau. Nur el I, con dieser Tarea eigentlich no viel a tun habe - el übernimmt el Betriebssystem para mich, vorausgesetzt lo son una NTFS formatierte Patition (en XP eigentlich ya fast Standard).
In el Registry funktioniert el en el gleiche Weise. Auch hier puede Keys gegen Fremdzugriff geschützt voluntad. En algunos Systemkeys bajo HKEY_LOCAL_MACHINE es standardmäßig así, daß eigentlich sólo Admins darauf zugreifen puede.
Como ya he dicho - wäre el para Files gelöst, podría al para todos otro Bereiche des Betriebsystems auch anwenden. Desde que hier sólo bedinngt encima NTFS Partitionen verfüge, bräuchte Yo evtl. una a zwei Personas, el algo enger con me zusammenarbeiten y 2000 oder XP con NTFS haben. Oberflächliche Kenntnisse, como esta Betriebssysteme trabajo, debería uno ya mitbringen.
El Delphianer haben algo ähnliches intenta - es como scheinbar wohl kläglich en el Hose gegangen. Yo denke veces, wir kriegen el geregelt. |
| | | | |
| | | Usted weißt doch - wenns qué a testen son...
Salve. |
| | | | |
| | CB | ¡Hola, Andreas!
Bin gerne auch esta. XP - 2000 - NT, auch en el Netzwerk. Tät mich auch interés!
Ciao, Christian |
| | | | |
| | | ¡Hola ihr beiden...
Bestens - sobald Yo otra vez voll a media Internet-PC kann, gehts genau hier los. Das kann todavía a a 14 Tagen dauern, deshalb algo Geduld.
Yo habe antes, ähnlich como en LSA-API y el Aktivieren de Privilegien, hier muy tief en el Herz cada Windows NT-basieten Betriebssystems a blicken.
Wenn esta algo vernünftiges herauskommt, se el Ergebnis no sólo para Files gelten, pero en todos Bereiche uno NT-basierten Systems zutreffen, el con ACCESS_MASK Flags trabajo - el Registry bajo anderem, en sólo una Ejemplo de vielen a nennen.
Me complace ya en el Zusammenarbeit con euch y hoffe, daß ihr me auch algo en el Sprünge helfen könnt, wenns en me haken debería... |
| | | | |
| | | ¡Hola ihr beiden (y el Rest ebenso)...
OK, ahora fangen wir veces bastante langsam y simplemente a:
Zuerst hole Yo el Security Descriptor - also todavía nichts besonderes.
Welche Rückmeldungen gibts - qué zeigt el Ausgabebox a - es irgendetwas unschlüssig? KompilierenMarcaSeparaciónWindowstyle 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 a irgendwelchen Sachen? Gibt lo irgendo 997 Fehlermeldungen? Kann se el alguien erklären??? |
| | | | |
| | Rolf Koch | Hi AH tener simplemente veces ne *.txt Expediente gewählt.
en me kommt después de LookupPrivilegeValue=1 el Valor 997. Erklären kann Yo dies pero no, como Yo no Schimmer su habe
Rolf |
| | | | |
| | | Hey Rolf...
Scheint aber trotzdem a trabajo => Rückmeldung es sí 1. Como siehts con el otro Rückmeldungen de?
Ziel el Kiste = Yo voluntad en Installation uno Programms festlegen puede, welche User en welcher Art y Weise Zugriff en el installierten Archivos haben. Normalerweise se el Zugriff de übergeordneter Punto vererbt. Das kann en eingeschränkten Rechten a bastante erheblichen Problemen führen... |
| | | | |
| | Rolf Koch | Also sieht en me así de: KompilierenMarcaSeparación Und como Yo a faul bin alles abzutippen, qué en el Liste es, Yo Su código una bisschen en Arbeitselemente erweitert KompilierenMarcaSeparaciónWindowstyle 31
Windowtitle "File Security"
Ventana 0,0-640,440
DEF @GetFileSecurity(5) !"ADVAPI32","GetFileSecurityA"
DEF @GetLastError(0) !"KERNEL32","GetLastError"
DEF @LookupPrivilegeName(4)!"advapi32","LookupPrivilegeNameA" Ermittelt de el Luid uno Privilegs dessen Namen.
DEF @LookupPrivilegeValue(3) !"advapi32","LookupPrivilegeValueA" Ermittelt de el Namen uno Privilegs dessen Luid.
DEF @OpenProcessToken(3) !"advapi32","OpenProcessToken" Öffnet Einstellprozess.
DEF @AdjustTokenPrivileges(6) !"advapi32","AdjustTokenPrivileges" Stellt Privilegien una.
DEF @GetCurrentProcess(0) !"kernel32","GetCurrentProcess" Ermittel el Handle des aktiven Prozesses.
DEF @CloseHandle(1) !"kernel32","CloseHandle" Schließt una Handle (Programa).
Def @GetVolumeInformation(8) !"KERNEL32","GetVolumeInformationA"
Declarar Filename$,Fehler&,SECURITY_INFORMATION#,PSECURITY_DESCRIPTOR#,Needed#
Declarar NewState#,token#,Privileg#,Luid#,Sistema$
Declarar 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 Archivos |*.*|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 es einschränkbar"
más
ADDSTRING "Zugriff es no einschränkbar"
endif
ADDSTRING "Ausgelesene Partition="+@String$(Dat#,0)
dim token#,4
DIM NewState#,16
DIM Luid#,8
DIM Privileg#,33
ADDSTRING "Windowsversion="+$WINVER
Largo NewState#,0=1 Nur una Privileg se geändert voluntad
Largo NewState#,12=$00000002 Das Privileg se eingeschaltet voluntad
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(Sistema$,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)
Let 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&)
Disponer Luid#
Disponer Privileg#
Disponer NewState#
Disponer token#
Disponer Needed#
Disponer PSECURITY_DESCRIPTOR#
Disponer SECURITY_INFORMATION#
Disponer Label#
Disponer LFlags#
DISPOSE DAT#
Endif
Mientras 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 |
| | | | |
|
RespuestaThemeninformationenDieses Thema ha 6 subscriber: |