AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Gemeinsame Dokumente:Zugriffsrechte setzen und erkennen (XP)
Thema durchsuchen
Ansicht
Themen-Optionen

Gemeinsame Dokumente:Zugriffsrechte setzen und erkennen (XP)

Ein Thema von messie · begonnen am 6. Mai 2010 · letzter Beitrag vom 7. Mai 2010
Antwort Antwort
messie

Registriert seit: 2. Mär 2005
Ort: Göttingen
1.592 Beiträge
 
Delphi 2009 Professional
 
#1

Gemeinsame Dokumente:Zugriffsrechte setzen und erkennen (XP)

  Alt 6. Mai 2010, 11:46
Moin,

ich habe ein Problem, das offensichtlich nur unter XP auftritt. Ein Programm erstellt im Administratormodus ein Verzeichnis und eine Textdatei in "Gemeinsame Dokumente" (Mit AssignFile).

Wenn nun aber ein eingeschränkter user in diese Datei (einfaches Logfile, mit AssignFile, Reset und Append) schreiben möchte, knallt es (I/O 103).

Dabei ist Folgendes merkwürdig: das Programm wird laut Manifest als "AsInvoker" gestartet, das sollte also der Datei auch die niedrigst möglichen Rechte für andere user mitgeben. Unter Vista lief es in unseren Tests problemlos (da wurde nur die Datei, nicht aber das Verzeichnis angelegt).

Ist das ein Problem von XP? Oder gibt es ein Problem mit Filemode? Das sieht doch aber nach den Zugriffen von Prozessen, nicht von usern oder liege ich da falsch?

Nebenbei versuche ich gerade die Rechte auszulesen, das ist aber gar nicht so leicht so dass ich noch kein Ergebnis habe

Das Programm wird in Delphi 6 gepflegt.

Grüße, Messie

Edit: kann man irgendwie die DACL löschen, nachdem die Datei erstellt wurde?
  Mit Zitat antworten Zitat
Dezipaitor

Registriert seit: 14. Apr 2003
Ort: Stuttgart
1.701 Beiträge
 
Delphi 7 Professional
 
#2

Re: Gemeinsame Dokumente:Zugriffsrechte setzen und erkennen

  Alt 6. Mai 2010, 11:59
Das ist schon okay so, denn ein Benutzer soll ja nicht eine Datei eines anderen Benutzers einsehen dürfen (oder sogar löschen).
Die Frage ist, was willst du einen anderne Benutzer erlauben? Soll der andere Benutzer lesen dürfen? Oder soll er auch schreiben dürfen. Letzteres könnte ein Sicherheitsrisiko darstellen (z.B. weil die Datei durch ein Virus ersetzt wird).

Eine NULL-DACL erlaubt für alle den vollen Zugriff. MS rät davon tunlichst ab.

Ich kann mich erinnern, dass es in der JCL eine Funktion gibt, die das macht.
Mit der JWSCL geht es auch einfach:
http://blog.delphi-jedi.net/2010/03/...lder-security/
Christian
Windows, Tokens, Access Control List, Dateisicherheit, Desktop, Vista Elevation?
Goto: JEDI API LIB & Windows Security Code Library (JWSCL)
  Mit Zitat antworten Zitat
messie

Registriert seit: 2. Mär 2005
Ort: Göttingen
1.592 Beiträge
 
Delphi 2009 Professional
 
#3

Re: Gemeinsame Dokumente:Zugriffsrechte setzen und erkennen

  Alt 6. Mai 2010, 13:16
Zitat von Dezipaitor:
Das ist schon okay so, denn ein Benutzer soll ja nicht eine Datei eines anderen Benutzers einsehen dürfen (oder sogar löschen).
Die Frage ist, was willst du einen anderne Benutzer erlauben? Soll der andere Benutzer lesen dürfen? Oder soll er auch schreiben dürfen. Letzteres könnte ein Sicherheitsrisiko darstellen (z.B. weil die Datei durch ein Virus ersetzt wird).
Wozu habe ich denn einen Ordner "Gemeinsame Dokumente" (oder "Öffentlich" bei Vista), wenn nicht mehrere user da rein schreiben können. Eine Textdatei, in der einer nur Lesen kann, ist kein gemeinsames Dokument. Ich bin auch am überlegen, ob es das Unterverzeichnis ist, auf das nicht zugegriffen werden darf.

Zitat von Dezipaitor:
Eine NULL-DACL erlaubt für alle den vollen Zugriff. MS rät davon tunlichst ab.
Das mache ich sonst auch so. Nur kann ich das noch nicht programmtechnisch. Ich benutze Installshield dazu, da kann ich den Zugriff auf everyone mit vollen Rechten setzen. Nur kennt der Windows Installer keine "Gemeinsame Dokumente".

Die JWSCL schaue ich mir mal an. Hoffentlich läuft das auch mit D6.

Das müsste ja die ganzen API-Sachen kapseln, oder?

Grüße, Messie
  Mit Zitat antworten Zitat
Dezipaitor

Registriert seit: 14. Apr 2003
Ort: Stuttgart
1.701 Beiträge
 
Delphi 7 Professional
 
#4

Re: Gemeinsame Dokumente:Zugriffsrechte setzen und erkennen

  Alt 6. Mai 2010, 13:49
Zitat von messie:
Zitat von Dezipaitor:
Das ist schon okay so, denn ein Benutzer soll ja nicht eine Datei eines anderen Benutzers einsehen dürfen (oder sogar löschen).
Die Frage ist, was willst du einen anderne Benutzer erlauben? Soll der andere Benutzer lesen dürfen? Oder soll er auch schreiben dürfen. Letzteres könnte ein Sicherheitsrisiko darstellen (z.B. weil die Datei durch ein Virus ersetzt wird).
Wozu habe ich denn einen Ordner "Gemeinsame Dokumente" (oder "Öffentlich" bei Vista), wenn nicht mehrere user da rein schreiben können. Eine Textdatei, in der einer nur Lesen kann, ist kein gemeinsames Dokument. Ich bin auch am überlegen, ob es das Unterverzeichnis ist, auf das nicht zugegriffen werden darf.
Gemeinsame Dokumente sind für normale Benutzer, damit diese untereinander Daten schnell austauschen können! Es ist nicht dafür gedacht, dass Programme es als Kommunikation für ihre Zwecke nutzen. Dazu gibt es bessere und sichere Mittel (z.B. IPC und COM).
Lies mal, was Raymond Chen, ein langjähriger MS Mitarbeiter, dazu schreibt.
Du machst nämlich genau das was Chen anprangert.

Dein Programm schreibt als Administrator die Datei in "Gemeinsame Dokumente" und gibt diese Datei für alle frei. Chen listet diese Problempunkte auf, die daraus resultieren:
  • Jeder kann diese Datei beschreiben und somit das Programm eines anderen Benutzers zum Absturz bringen.
  • Viren einschleusen, denn jeder kann die Datei umbenennen, z.b. in "Dein geforderter Bericht, John.pdf.exe"
  • NTFS Alternate Data Streams benutzen, um zusätzliche Daten zu speichern.
  • Admindateien sind nicht an die Speicherplatzbeschränkung gebunden. D.h. jeder Benutzer kann beliebig vielen Speicher verbrauchen und das System zu Stillstand bringen.

Du siehst, dass du im Begriff bist ein Sicherheitslücke zu entwickeln!

Zitat von messie:
Zitat von Dezipaitor:
Eine NULL-DACL erlaubt für alle den vollen Zugriff. MS rät davon tunlichst ab.
Das mache ich sonst auch so. Nur kann ich das noch nicht programmtechnisch. Ich benutze Installshield dazu, da kann ich den Zugriff auf everyone mit vollen Rechten setzen. Nur kennt der Windows Installer keine "Gemeinsame Dokumente".

Die JWSCL schaue ich mir mal an. Hoffentlich läuft das auch mit D6.

Das müsste ja die ganzen API-Sachen kapseln, oder?

Grüße, Messie
Nein, nicht alle API Sachen. Nur eine Untermenge
D6 wird noch unterstützt.
Christian
Windows, Tokens, Access Control List, Dateisicherheit, Desktop, Vista Elevation?
Goto: JEDI API LIB & Windows Security Code Library (JWSCL)
  Mit Zitat antworten Zitat
messie

Registriert seit: 2. Mär 2005
Ort: Göttingen
1.592 Beiträge
 
Delphi 2009 Professional
 
#5

Re: Gemeinsame Dokumente:Zugriffsrechte setzen und erkennen

  Alt 6. Mai 2010, 14:09
Zitat von Dezipaitor:
Dein Programm schreibt als Administrator die Datei in "Gemeinsame Dokumente" und gibt diese Datei für alle frei. Chen listet diese Problempunkte auf, die daraus resultieren:
  • Jeder kann diese Datei beschreiben und somit das Programm eines anderen Benutzers zum Absturz bringen.
  • Viren einschleusen, denn jeder kann die Datei umbenennen, z.b. in "Dein geforderter Bericht, John.pdf.exe"
  • NTFS Alternate Data Streams benutzen, um zusätzliche Daten zu speichern.
  • Admindateien sind nicht an die Speicherplatzbeschränkung gebunden. D.h. jeder Benutzer kann beliebig vielen Speicher verbrauchen und das System zu Stillstand bringen.
Du siehst, dass du im Begriff bist ein Sicherheitslücke zu entwickeln!
Dann habe ich wohl die Rechtevergabe falsch verstanden. Nach allem, was ich weiß, sollte die Datei nicht als Administratordatei angelegt werden.
Ich starte das Programm als AsInvoker, also das niedrigste verfügbare Rechtelevel. Nach dem was ich weiß, ist das unabhängig vom Login-Status als Administrator.
Wieso sind dann Dateien, die das Programm schreibt, mit einem Mal wieder Admin-Dateien?

Deshalb steht das hier auch in API: ich muss irgendwie rausbekommen, mit welchen Rechten tatsächlich geschrieben wird. Da es unter Vista (ohne das Löschen des DACL!) geht, scheint bei XP etwas schief zu gehen...

Grüße vom verwirrten Messie
  Mit Zitat antworten Zitat
Dezipaitor

Registriert seit: 14. Apr 2003
Ort: Stuttgart
1.701 Beiträge
 
Delphi 7 Professional
 
#6

Re: Gemeinsame Dokumente:Zugriffsrechte setzen und erkennen

  Alt 6. Mai 2010, 19:35
Ich habe mich darauf bezogen.
Zitat:
Ein Programm erstellt im Administratormodus ein Verzeichnis und eine Textdatei in "Gemeinsame Dokumente" (Mit AssignFile).
Das sagt für mich aus, dass du unter XP mit Administratorenrechten arbeitest. Der Teil "asInvoker" im Manifest wird unter XP ignoriert.
Christian
Windows, Tokens, Access Control List, Dateisicherheit, Desktop, Vista Elevation?
Goto: JEDI API LIB & Windows Security Code Library (JWSCL)
  Mit Zitat antworten Zitat
messie

Registriert seit: 2. Mär 2005
Ort: Göttingen
1.592 Beiträge
 
Delphi 2009 Professional
 
#7

Re: Gemeinsame Dokumente:Zugriffsrechte setzen und erkennen

  Alt 7. Mai 2010, 07:55
Zitat von Dezipaitor:
Der Teil "asInvoker" im Manifest wird unter XP ignoriert.
Ok, das hatte ich anders verstanden. Hab es jetzt nochmal im MSDN nachgelesen: wenn man die Information schon hat, versteht man es richtig
Es steht nämlich nicht deutlich drin, dass das execution level unter XP ignoriert wird.

Bleibt immer noch die Frage, warum Dokumente nicht von verschiedenen usern mit Schreibzugriff genutzt werden dürfen. Dafür war "Gemeinsame Dokumente" doch eigentlich gedacht...

Grüße, Messie
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:42 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz