AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Windows-Berechtigung auf Netzwerkfreigabe
Thema durchsuchen
Ansicht
Themen-Optionen

Windows-Berechtigung auf Netzwerkfreigabe

Ein Thema von Codehunter · begonnen am 18. Jan 2016 · letzter Beitrag vom 20. Jan 2016
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Codehunter
Codehunter

Registriert seit: 3. Jun 2003
Ort: Thüringen
2.272 Beiträge
 
Delphi 10.4 Sydney
 
#1

Windows-Berechtigung auf Netzwerkfreigabe

  Alt 18. Jan 2016, 14:56
Hallo!

Folgendes Szenario:
  • eine Windows-2008-Domäne
  • ein Fileserver mit freigegebenem Netshare
  • ein Netzlaufwerksbuchstabe welcher auf jedem Domänenclient per GPO auf dieses Netshare verbunden wird
  • ein Ordner unterhalb des Netzlaufwerkes
  • ein spezieller Domänenbenutzer, welcher als einziger Lese- u. Schreibrechte auf diesem Ordner hat
  • ein Delphi-Programm, welches im Benutzerkontext anderer Domänenbenutzer läuft
  • das Delphi-Programm soll Dateien in besagtem Ordner ablegen und wieder lesen können
  • den normalen Domänen-Benutzern sind die Zugangsdaten für den Ordner nicht bekannt

Besagter Ordner soll eine Art "Zettelkasten" für einen fortlaufenden Import eines zugekauften Warenwirtschaftssystems sein. Die Delphi-Anwendung wirft sozusagen Änderungsanweisungen für die Warenwirtschaft hinein. Ich will von vornherein ausschließen, dass bastelfreudige Angestellte an den Dateien im Zettelkasten herum schrauben. Darum dachte ich mir, ich konstruiere das über Datei-/Ordnerberechtigungen und gebe der Delphi-Anwendung die entsprechenden Login-Daten einfach mit.

Wo ich nicht so recht weiter komme ist die Tatsache, dass die Delphi-Anwendung vom jeweiligen Mitarbeiter-Domänenkonto aus ausgeführt wird und entsprechend dessen Berechtigungen erbt. Das ist auch gut so und soll so bleiben. Lediglich die "Zettelwerferei" soll intern mit anderern Benutzerrechten laufen. Und zwar ohne dass Login-Daten vom Benutzer abgefragt werden.

Über (mangelnde) Eleganz hartcodierter Login-Daten wollen wir uns an der Stelle mal nicht streiten, das ist nur eine kleine Umgehungslösung bis die nächste große Wawi-Release kommt.

Danke schon mal...

Grüße
Cody
Ich mache grundsätzlich keine Screenshots. Schießen auf Bildschirme gibt nämlich hässliche Pixelfehler und schadet der Gesundheit vom Kollegen gegenüber. I und E zu vertauschen hätte den selben negativen Effekt, würde aber eher dem Betriebsklima schaden
  Mit Zitat antworten Zitat
Benutzerbild von Dalai
Dalai
Online

Registriert seit: 9. Apr 2006
1.682 Beiträge
 
Delphi 5 Professional
 
#2

AW: Windows-Berechtigung auf Netzwerkfreigabe

  Alt 18. Jan 2016, 15:35
Soweit ich weiß, ist der kleinste gemeinsame Nenner die Prozessebene; ein Thread kann AFAIK nicht mit anderen Credentials laufen als die anderen Threads im selben Prozess (anderer Token geht glaub ich).

Ich sehe nur die Möglichkeit, dass die "Zettelwerferei" mit einer separaten EXE realisiert wird, die vom Delphi-Programm aus mit den entsprechenden Credentials gestartet wird. Alternativ könnte das Delphi-Programm eine zweite Instanz mit anderen Credentials seiner selbst starten (via Parameter), die die gewünschte Aktion ausführt und sich gleich wieder beendet. Wo die Zugangsdaten dann hinterlegt sind, lasse ich mal offen.

Aber vielleicht haben andere Leser noch bessere, elegantere Ideen.

MfG Dalai
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#3

AW: Windows-Berechtigung auf Netzwerkfreigabe

  Alt 18. Jan 2016, 15:45
Könnte man das nicht mit Hilfe einer/der DB lösen?
Die angestrebte Lösung scheint mir zu "tricky" zu sein.

In beiden Fällen hätte man einen "Hintertürbenutzer" der nach meiner Meinung für eine DB besser in den Griff zu bekommen ist (ein Benutzer mit Rechten nur auf einen View/Table, ggf noch in einem anderen Schema?)

U.U sind die Daten auch noch verschlüsselt!?

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#4

AW: Windows-Berechtigung auf Netzwerkfreigabe

  Alt 18. Jan 2016, 16:16
Soweit mir bekannt, wird clientseitig ein Netzlaufwerk je Server nur mit einem(1!) Benutzer verbunden. Befindet sich die Freigabe für den Zettelkasten also auf dem gleichen Server, auf dem bereits andere Freigaben für den User aktiv- nicht nur definiert- sind, funktioniert eine weitere Ressourcennutzung unter anderem Account nicht.
Also vielleicht einfacher per DB, Webservice oder so umzusetzen.
Gruß, Jo
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.006 Beiträge
 
Delphi 2009 Professional
 
#5

AW: Windows-Berechtigung auf Netzwerkfreigabe

  Alt 18. Jan 2016, 16:20
Meine "Ideallösung" wäre ein (Delphi-)Programm ohne Datenbank auf einem nicht-interaktiven Rechner - aber nicht auf dem Fileserver - zu verwenden das über IPC (z.B. simples HTTP) die Daten entgegennimmt.

Vorteile: kein Overhead durch Starten eines weiteren Programms, Zugangsdaten stehen nicht in der Clientseitigen Anwendung, die Clientseite kennt nur den DNS Namen des nicht-interaktiven Rechners, Zugriff auf Zielordner erfolgt nur von einem einzigen System aus

Nachteile/Risiken: der IPC Prozess könnte gerade mal unerreichbar sein. Clients müssten "Retry" Fähigkeit besitzen oder es wird eine "Message Queue" (anstatt HTTP) verwendet
Michael Justin
  Mit Zitat antworten Zitat
Benutzerbild von Codehunter
Codehunter

Registriert seit: 3. Jun 2003
Ort: Thüringen
2.272 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: Windows-Berechtigung auf Netzwerkfreigabe

  Alt 18. Jan 2016, 16:21
Das Problem ist leider, dass die Wawi serverseitig (also die DB) verriegelt und verrammelt ist. Die bieten nichts anderes an als die Dateischnittstelle. Die Variante, einen Serverdienst zu schreiben hatte ich mir auch schon überlegt, dann aber aus Kosten-Nutzen-Gründen wieder verworfen.
Ich mache grundsätzlich keine Screenshots. Schießen auf Bildschirme gibt nämlich hässliche Pixelfehler und schadet der Gesundheit vom Kollegen gegenüber. I und E zu vertauschen hätte den selben negativen Effekt, würde aber eher dem Betriebsklima schaden
  Mit Zitat antworten Zitat
pesi

Registriert seit: 29. Aug 2003
Ort: 36217 Ronshausen
117 Beiträge
 
Delphi XE5 Professional
 
#7

AW: Windows-Berechtigung auf Netzwerkfreigabe

  Alt 18. Jan 2016, 16:40
Hi,
ich habe mal folgenden Codeschnipsel gefunden und den nutze ich auf fleißig.
...allerdings immer nur um ein Laufwerk zu mappen, aber nie mit den Parametern User und Passwort. Müsstest Du also mal ausprobieren!?

Code:
function TForm1.LaufwerkVerbinden(const ADrive: String;
  const ADirectory, AUsername, APassword: String;
  const ARestoreAtLogon: Boolean ): Boolean;
var
  NetResource: TNetResource;
  dwFlags:    DWORD;
  lPwd, lUser: PChar;
begin
  NetResource.dwType:=RESOURCETYPE_DISK;
  NetResource.lpLocalName:=PChar(ADrive);
  NetResource.lpRemoteName:=PChar(ADirectory);
  NetResource.lpProvider:=nil;

  if ARestoreAtLogon then
    dwFlags:=CONNECT_UPDATE_PROFILE
  else
    dwFlags:=0;

  if AUsername<>'' then
    lUser:=PChar(AUsername)
  else
    lUser:=nil;

  if APassword<>'' then
    lPwd:=PChar(APassword)
  else
    lPwd:=nil;

  Result:=WNetAddConnection2(NetResource,
                             lPwd,
                             lUser,
                             dwFlags)=NO_ERROR;
end;
  Mit Zitat antworten Zitat
pesi

Registriert seit: 29. Aug 2003
Ort: 36217 Ronshausen
117 Beiträge
 
Delphi XE5 Professional
 
#8

AW: Windows-Berechtigung auf Netzwerkfreigabe

  Alt 18. Jan 2016, 16:41
Ach so.... trennen tu ich mein Laufwer "B:" dann immer mit WNetCancelConnection2('B:',0, True);
  Mit Zitat antworten Zitat
Benutzerbild von Dalai
Dalai
Online

Registriert seit: 9. Apr 2006
1.682 Beiträge
 
Delphi 5 Professional
 
#9

AW: Windows-Berechtigung auf Netzwerkfreigabe

  Alt 18. Jan 2016, 16:53
Soweit mir bekannt, wird clientseitig ein Netzlaufwerk je Server nur mit einem(1!) Benutzer verbunden.
Wenn der Zugriff mit demselben (lokalen) Benutzer stattfindet, dann stimmt das. Ein Nutzer kann beim Verbinden einer Freigabe (bzw. dem Zugriff auf diese) desselben Servers keine anderen Zugangsdaten benutzen als diejenigen, die für bereits verbundene/bestehende Netzlaufwerke aktiv sind. Windows quittiert jeglichen Versuch mit einer entsprechenden Fehlermeldung (Meldungstext gerade nicht gegenwärtig).

Zitat:
Befindet sich die Freigabe für den Zettelkasten also auf dem gleichen Server, auf dem bereits andere Freigaben für den User aktiv- nicht nur definiert- sind, funktioniert eine weitere Ressourcennutzung unter anderem Account nicht.
Mit demselben Benutzertoken nicht, aber mittels eines z.B. via RunAs gestarteten Prozesses schon; das ist das, was ich oben meinte.

MfG Dalai
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#10

AW: Windows-Berechtigung auf Netzwerkfreigabe

  Alt 18. Jan 2016, 18:39
Zitat:
Befindet sich die Freigabe für den Zettelkasten also auf dem gleichen Server, auf dem bereits andere Freigaben für den User aktiv- nicht nur definiert- sind, funktioniert eine weitere Ressourcennutzung unter anderem Account nicht.
Mit demselben Benutzertoken nicht, aber mittels eines z.B. via RunAs gestarteten Prozesses schon; das ist das, was ich oben meinte.
Ok, das habe ich oben so nicht verstanden. Es dreht sich um den (Domänen)Account für die Serveranmeldung. Es kann nur jeweils einen geben. Werden die anderen Credentials nicht nur bei der Ressourcenanforderung des Netzlaufwerks, sondern schon beim (separat gestarteten) Prozess per RunAS angegeben, wird das wohl gehen.

Dann gibt's noch die "Gemeinheit", dass es nicht unbedingt geheim bleibt, wenn ein Nutzer sich alle Prozesse anzeigen darf. Zumindest der "Fremd"-Account ist dann bekannt.
Wenn der Prozess selbst auf der Freigabe Probleme macht, kann man schlecht erkennen, wer der Übeltäter ist (gesperrte Datei, ..)

Kann man nicht einfacher User spezifische Share mit entsprechenden Berechtigungen einrichten, so wie bei einem privaten Laufwerk?
Ist transparenter, kein Gewurschtel mit Accounts, maximale Verwüstung wären die eigenen Zettel.
Gruß, Jo
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 16:26 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