![]() |
In Verzeichnis schreiben mit anderen Benutzerrechten
Hallo Zusammen,
kennt jemand eine Möglichkeit vom eigenen Programm aus in ein Verzeichnis zu schreiben indem der angemeldete User keine Schreibrechte hat. Die Anwendung muss somit das Verzeichnis mit einem anderen Benutzter und Passwort öffnen um darin schreiben zu können. Gruß Kostas |
AW: In Verzeichnis schreiben mit anderen Benutzerrechten
Das Stich- und Suchwort lautet "Adminrechte"!
|
AW: In Verzeichnis schreiben mit anderen Benutzerrechten
Die Rechte eines anderen Benutzers zu nutzen ist nicht identisch mit der Nutzung von Administratorrechten.
|
AW: In Verzeichnis schreiben mit anderen Benutzerrechten
Das Schreiben in einen eigenen Prozess auslagern und diesen Prozess mittels CreateProcess(..) und den entsprechenden Anmeldeinformationen starten? Das wäre doch das einfachste, oder?
|
AW: In Verzeichnis schreiben mit anderen Benutzerrechten
Warum hat der Benutzer keine Rechte?
Rechte werden im allg. nach ihrer Notwendigkeit vergeben, nicht nach Haarfarbe oder Schuhgröße. Wenn also Rechte fehlen, sollte das eigentlich so vollkommen in Ordnung sein. Gruß K-H |
AW: In Verzeichnis schreiben mit anderen Benutzerrechten
Hallo Zusammen,
wenn der Anwender Report erzeugt oder CSV-Files schreibt, wird jeweils zusätzlich ein PDF/CSV-File erzeugt und soll in einen sicheren Speicherort abgelegt werden indem nur die Anwendung und die Geschäftsleitung Zugriff haben sollen. Das ist so eine Art Kontrolle was die Anwender an Daten aus der Anwendung ziehen. Screen shots sind nicht berücksichtigt. Dafür benötige ich keine Adminrechte sondern nur Rechte für den geschützten Speicherort. Es gibt relativ viele Stellen in der Anwendung um Reports zu erzeugen oder Daten an CSV exportieren zu können. Deshalb die Idee die komplette Anwendung in einem anderen User-Kontext laufen zu lassen der zu den normalen Zugriffen auch zusätzlich den Zugriff in diesem geschützten Speicherort hat. Gruß Kostas. |
AW: In Verzeichnis schreiben mit anderen Benutzerrechten
Warum nicht eine Nummer schlichter: dem Nutzer in diesem speziellen Ordner nur Rechte zum Erstellen neuer Dateien geben, aber nicht zum Löschen oder Verändern und ggfls auch nicht zum Ansehen.
Wäre eine Vorgehensweise, die schon seit Jahrzehnten so angewandt wird - schon vor 25 Jahren auf Novell-Servern, und auch heute haben Macs so einen Ordner pro User, damit sich Nutzer gegenseitig Dateien zustellen können. |
AW: In Verzeichnis schreiben mit anderen Benutzerrechten
Zitat:
Gruß K-H |
AW: In Verzeichnis schreiben mit anderen Benutzerrechten
Schon mal ein sehr interessanter Ansatz mit den "nur Schreibrechten" Ich müsste die Dateien in einem temp Ordner erzeugen und danach in das geschützte Archiv verschieben. Das würde funktionieren.
Ich habe in der gleichen Anwendung auch eine zweite Anforderung die mich doch dazu zwingt die Berechtigung an die Anwendung oder die Berechtigung auf den Speicherort zu übergeben. Der Hintergrund, es gibt Mitarbeiter die Bilder über Ihre Kamera erzeugen und diese zu einem Vorgang speichern. Diese Bilder dürfen Sie von der Anwendung aus anschauen und ausdrucken aber nicht löschen oder verändern. Die Anwendung muss also die Bilder zu einem Vorgang anzeigen können. Über den Explorer darf jedoch der Anwender nicht in diesen Ordner eingreifen können auch nicht lesend. Über die Anwendung wird nämlich protokolliert wann ein Bild eingestellt wurde, wann es von welchem User angesehen, gedruckt, exportiert u.s.w wurde. Die ganzen Aktionen werden über Berechnungen von der Anwendung aus gesteuert. Es gibt user die dürfen Ihre eigene Bilder nicht einsehen. Dann gibt es welche die dürfen irgend welche Bilder exportieren und sogar löschen. Wie gesagt, alles geregelt von der Anwendung heraus. Die Dokumente in die DB abzulegen währe die einfachste Methode. Dagegen spricht leider die riesige Anzahl der Dokumente und dessen Größe. Gruß Kostas |
AW: In Verzeichnis schreiben mit anderen Benutzerrechten
Auf der Kommandozeile vergibt man solche Rechte per "Net Use" mit Delphi gehts per Komponenten:
![]() ![]() ![]() Und ja, es ist sinnvoll für eine Rechtevergabe zu sorgen, die den Nutzen alles das erlaubt, was sie dürfen. Nicht mehr und nicht weniger. Wenn man per Programm Rechte für das Programm vergibt, die über das benötigte hinausgehen, kann man (soweit ich weiß) auch am Programm vorbei diese Rechte nutzen. Dann gibt es unter Windows noch die versteckten Freigaben. Normalerweise gibt man für 'ne Freigabe einfach "irgendeinentext" ein, wenn man jedoch "irgendeinentext$" als Freigabenamen vergibt, so werden sie nicht im Explorer ... angezeigt. In diesem Fall muss man die exakte Pfadangabe wissen, um die dort abgelegten Dateien einsehen zu können. Weiß man die, geht's auch vom Explorer aus. ![]() ![]() ![]() |
AW: In Verzeichnis schreiben mit anderen Benutzerrechten
Statt mit lokalen oder Domainen Userrechten rumzufrickeln hätte ich auch sowas wie DB server vorgeschlagen. Hier hat man tatsächlich dann viel Overhead.
Aber es gibt ja auch andere Server mit separater Authentifizierung und Autorisierung: Webserver (die sehr gut Bilder hosten können). Ggf kann sowas auch gleich mit "fertigen" Komponenten wie nextcloud o.ä. gelöst werden. Die (versteckten) Windows Freigaben setzen wohl einen separaten Server voraus, da Mehrfachanmeldung (2. User mit anderen Rechten) am gleichen nicht geht. Die "Unsichtbarkeit" einer Freigabe finde ich jetzt nicht so sicher. |
AW: In Verzeichnis schreiben mit anderen Benutzerrechten
Wenn man die Daten per Webserver anzeigen lässt, kann man sie auch per Webserver schreiben lassen, das ist jetzt auch nicht soviel Unterschied (Download und Upload sind ja jetzt auch nicht so überaus exotische Vorgänge ;-))
Versteckte Freigaben sind nicht wirklich die sicherste Alternative, unbestritten. Aber dass unterschiedliche Nutzer mit unterschiedlichen Rechten benötigt werden, ist hier ja nicht gegeben. Es gibt wohl eine Anwendung, die zwar von n Leuten genutzt wird, aber nur die Anwendung muss mit einem einzigen Benutzer (ggfls. von n Arbeitsplätzen) auf die Freigabe zugreifen können. Und der Rechtekonflikt zwischen mehreren Nutzen mit unterschiedlichen Rechten auf eine Freigabe besteht nur dann, wenn man diese von "einem" Windowsrechner aus einrichten will, dann gibts Probleme. Aber eine Freigabe kann durchaus von unterschiedliche Nutzer mit unterschiedlichen Rechten genutzt werden. Nur eben nicht zeitgleich von "einem" Rechner aus. Prinipiell kann man aber eine Freigabe einrichten und allen Nutzern, die diese benötigen, eigene Rechte geben, also denen die nur schreiben dürfen ausschließlich Schreibrechte und denen, die auch Bilder anzeigen lassen dürfen, Lese- und Schreibrechte. Und diese Rechte kann mann ggfls. auch auf Dateiebene vergeben. Man könnte also durchaus durch das Programm selbst den Nutzern, die Bilder speichern dürfen, ausschließlich für diese Bilder das Leserecht einräumen. Sie müssen nicht zwangsläufig dann auch ein Leserecht auf alle Dateien erhalten. Die Frage die sich stellt: Wieviel Aufwand ist man bereit zu treiben, um eine anforderungskonforme Rechteverwaltung aufzusetzen. Das wesentliche Problem ist hier erstmal: Was will man genau? Wenn das klar ist, kann man das mit Sicherheit umsetzen. Fraglich ist halt nur, mit welchem Aufwand und ist man bereit den zu betreiben. |
AW: In Verzeichnis schreiben mit anderen Benutzerrechten
Zitat:
Zitat:
In diesem Szenario ist es dann m.E. nicht möglich. Zitat:
Der Aufwand den man treiben will, dürfte sich mit dem Einsatz bestehender Technologien (http(s) Fileserver, samba, ..) in Grenzen halten, man muss nur die Anbindung machen. Wenn man natürlich möglichst viel proprietär aus der eigenen Anwendung heraus machen will/muss, ist es etwas anderes. |
AW: In Verzeichnis schreiben mit anderen Benutzerrechten
Zitat:
Gruß K-H P.S. Zitat:
|
AW: In Verzeichnis schreiben mit anderen Benutzerrechten
Zitat:
Server X und Freigabe Mitarbeiterverzeichnis_B für Nutzer B Server X und Freigabe Programmdateiablage für Nutzer B Server X und Freigabe Programme für alle Nutzer mit jeweils unterschiedlichen Rechten sollte gehen. Server X und Freigabe Mitarbeiterverzeichnis_B für Nutzer B Server X und Freigabe Programmdateiablage für Programm Server X und Freigabe Programme für alle Nutzer mit jeweils unterschiedlichen Rechten sollte gehen. Server X und Freigabe Mitarbeiterverzeichnis_B für Nutzer B Server X und Freigabe Programmdateiablage für Nutzer B Server X und Freigabe Programmdateiablage für Programm Server X und Freigabe Programme für alle Nutzer wird scheitern. Server X und Freigabe Rootverzeichnis für Alle Server X und Freigabe Rootverzeichnis\Programmdateiablage für Programm mit anderen Rechten wird scheitern. Eine allgemeine Freigabe auf "alles auf dem Server" und eine spezielle Freigabe mit anderen Rechten auf ein Verzeichnis unterhalb von "alles auf dem Server" wird eher nicht funktionieren. Eine allgemeine Freigabe eines Verzeichnisses auf einem Server schließt eine eingeschränkte Freigabe eines anderen Verzeichnisses auf dem gleichen Server nicht aus. Was nicht geht ist: Einen Server allgemein freigeben und dann unterhalb dieser allgemeinen Freigabe eine programmspezifische, eingeschränkte Freigabe einrichten. Ausgehend vom Eingangspost gibt es aber wohl Verzeichnisse, auf die Nutzer zugreifen können und Verzeichnisse, auf die sie nicht zugreifen können. Es gibt also keine allgemeine Freigabe auf den gesamten Server. Hiermit sollte es möglich sein, dass das Programm sich mit einem nur ihm bekannten Nutzer einen Zugang zu diesem explizit angegebene Verzeichnis verschafft. Und auch bei 'ner Datenbank muss man sich um die Rechte kümmern. Darf ein Nutzer nur Inserts machen oder darf er auch per select Daten lesen und wenn ja welche. Desgleichen gilt auch für 'nen Webserver: Wer darf Daten per Upload "hinschicken" und wer darf (egal ob per Webinterface oder Download) Daten einsehen. Man muss sich in allen Fällen 'nen Kopp darüber machen, was man will und dafür sorgen, dass dann nur die, die was dürfen, das dürfen, was sie dürfen sollen ;-) Das grundlegende Rechteproblem bleibt also bei allen Lösungsvorschlägen erhalten, nur die Art, wie es gelöst werden kann, wird sich unterscheiden. |
AW: In Verzeichnis schreiben mit anderen Benutzerrechten
Die einfachste Rechteverwaltung gelingt per Webserver.
Hier kann man jedem Anwender die Möglichkeit geben beliebige Dateien abzulegen und die eigenen auch anzusehen. Bestimmte Anwender (mit der Rolle Geschäftsleitung) dürfen die Dateien von allen ansehen. Löschen darf keiner. Das wäre ein Mini-Webserver mit drei Methoden
Code:
GET documents : Alle Dokumente (eigene oder alle nach Rolle)
GET documents/{id} : Ein Dokument POST documents : Dokument erzeugen |
AW: In Verzeichnis schreiben mit anderen Benutzerrechten
Hallo Zusammen,
die beste Variante wäre wie schon erwähnt allen in einer DB zu schreiben. Damit hätte ich die volle Kontrolle über die Anwendung und fertig. Es sind mehrere tausend Dateien insgesamt derzeit 12 TB und steigt im Jahr ca. 750 GB. Die Bilder sind in unterschiedlichen Größen, Es sind CAD Zeichnungen, Es sind voll fette Ausschreibungen 500 Seiten gescannt und als PDF abgelegt u.s.w. Das alles in einer DB zu schreiben wollte ich einfach nicht. Zum nächsten, kommt es drei bis vier mal im Jahr indem die Archive von der Geschäftsleitung über den Explorer durchsucht werden. Alle Anwender dürfen über den Explorer nicht in das Archiv sondern immer nur über die Anwendung damit der Vorgang protokolliert wird! Nur die Geschäftsleitung, Systemkonto und BackupKonto darf auf das Archiv zugreifen. Auch dem Admin ist es nicht gestattet. Er hat zwar ein Hintertürchen aber das muss die GL nicht wissen. :-) Könnte sogar ein Kündigungsgrund sein. Über die Rechtevergabe im ADDS kann ich das Problem nicht lösen. Alle User können zwar ein NUR Schreibrecht bekommen. Damit habe ich 80% der Anforderung erledigt- das anlegen. Die Anwendung braucht jedoch volle Rechte um die Bilder anzeigen zu können, Dokumente verändern und löschen zu können. Wie gesagt, deshalb aus der Anwendung heraus damit der Vorgang protokolliert wird. Jede der ein Bild anschauen, wird in der Datenbank dokumentiert. Im laufe diesen Thread wurde mir bereits ein Vorschlag gemacht wie aus der Anwendung heraus in ein Ordnen zugegriffen wird mir anderen Rechten. Ich hatte noch keine Zeit das zu testen und vor allem welche Seiteneffekte dabei auftreten. Ich würde mit weniger Seiteneffekte rechnen wenn die Anwendung selbst mit mehr Rechte ausgeführt wird. Ich müsste auch nicht in mehreren Stellen im Programm den Speicherort mit andere Rechte öffnen und wieder schliessen. Deshalb die Idee die komplette Anwendung mit mehr Rechte ausführen zu können. Gruß Kostas |
AW: In Verzeichnis schreiben mit anderen Benutzerrechten
DB Variante
Wenn die DB etwas programmiert werden kann und es "zuviel" für die DB selbst ist: Wir machen das u.U. so, dass zwar eine Datei mit einer DB Funktion hochgeladen wird, aber wenn es in der DB ankommt, wird die Datei ins Filesystem geschrieben und in der DB nur der Pfad gespeichert, ziemlich simpel. Wie bereits nun mehrfach vorgeschlagen: über Webserver Wenn das beides nicht in Frage kommt: könnte man es über einen EXE machen, die als Dienst mit einem anderen Account läuft und damit andere Rechte hat. Dann muss das Programm die Dateien immer über diesen Dienst lesen/schreiben. |
AW: In Verzeichnis schreiben mit anderen Benutzerrechten
Also mal so hingedaddelt:
Die Verwaltung, was wo liegt und wer womit was machen darf kann soll muss, legst Du in die Datenbank. Da sagst Du ja, dass Du das hinbekommst. Die Dateien kommen nicht in ein Blob in der DB, sondern in die DB wird nur geschrieben, wo die zugehörige Datei abgelegt wurde. Damit benötigst Du keine Rechte mehr für "irgendwelche Normalbenutzer". Und die Geschäftsleitung durchsucht die Dateien gefälligst nicht mehr mit dem Explorer, sondern eben auf mit dem Programm oder bekommt notfalls ein eigenes Programm, dass die Datenbankinhalte explorerähnlich darstellt und bekommt dann von dem Programm ggfls. die Dateien zur Ansicht geliefert. (Und die Suche nach Inhalten in diesen Größenordnungen könnte durch gezielte Auswahl per Select * from wasauchimmer where wiebitte = suchmirdas dürfte da eventuell deutlich effektiver werden.) Die Geschäftsleitung könnte dadurch also durchaus auch profitieren. (Und keiner von denen kann mehr irgendwas versehentlich per Explorer verschieben, löschen ...) Eine ggfls. erforderliche Revisionssichertheit könnte dadurch steigen. Pflapsig formuliert: Die umständliche Rechtevergabe auf Dateiebene lagerst Du aus in eine Rechtevergabe auf Datenbankebene. Damit benötigst Du (vermutlich) nur noch einen Datenbankbenutzer. Wer wann was zu sehen bekommt oder schreiben darf, ergibt sich aus der im Programm implementierten Geschäftslogik. Wenn das Programm schon über ein sinnvolles Berechtigungssystem verfügt (muss man sich beim Programmstart dort irgendwie Anmelden oder eher Doppelklick zum Programmstart und man darf loslegen?), so dürfte der Aufwand vertretbar und überschaubar sein. Möglichkeiten, wie das Programm die Daten an die in der Datenbank vermerkten Stelle bekommt, wurde schon beschrieben. Das Programm macht das eben nicht selbst, sondern bittet eine andere Software, dies zu übernehmen. Nur diese Software (Webserver, Dienst ...) benötigt dann Rechte im Filesystem. |
AW: In Verzeichnis schreiben mit anderen Benutzerrechten
Aktuell habe ich den Zustand dass die Anwendung die Berechtigung der User wehr was darf verwaltet. Auch in der DB steht der relative Link zu den Dateien und das protokollieren ist umgesetzt. Das alles funktioniert schon seit vielen Jahren. Das Projekt ist noch ein Delphi 5 Projekt und kann nicht einmal hochgezogen werden wegen Fremdkomponenten. :-( Ich verwende auch die versteckteFreigabe$. Der normale sterbliche Anwender kommt sicherlich nicht drauf. Ein etwas erfahrener, sagen wir mal Poweruser würde irgendwann mal schon drauf kommen. Aktuell läuft es schon seit mehreren Jahren so. Es gab in derzeit zwei Anwender die aufgeflogen sind weil Sie solche geheime Informationen an Mitbewerber weitergegeben haben. Durch die Logs hat man den Zeitraum eingegrenzt und die Dokumenten gefunden die das Haus verlassen haben.
Die Sache mit dem ![]() Herzlichen Dank und eine schöne Zeit an alle. Gruß Kostas |
AW: In Verzeichnis schreiben mit anderen Benutzerrechten
Der Drops ist zwar gelutscht, aber ich muß noch eine Bemerung los werden.
Zitat:
Über Gruppen und Views kann man dann verschiedenen Nutzern vollkommen unterschiedliche Datenbanken vorspiegeln. Das ist zugegebener Maßen nicht ganz trivial, aber meiner Meinung nach sicherer als die Oneforall-Lösung. (Wir hatten so zwei geographisch unterschiedliche Benutzergruppen vollständig gegeneinander abgeschottet) Gruß K-H |
AW: In Verzeichnis schreiben mit anderen Benutzerrechten
Prinzipiell ok, aber damit sind wir wieder bei der Frage: Wieviel Aufwand wollen wir treiben.
Das mit dem einen Nutzer meinte ich auch eher in Bezug auf die Kommunikation zwischen Datenbank und Filesystem. Das ein Anwender auf der Datenbank selbst nur das darf, was seinen Anforderungen / seinem Job entspricht, sollte selbstverständlich sein. |
AW: In Verzeichnis schreiben mit anderen Benutzerrechten
Zitat:
Würde heißen, selbst wenn ein User mit seinem Login direkt in die DB einsteigt, werden seine Zugriffe genauso gelogged wie von außen (es gibt aus DB Sicht einfach keinen Unterschied), ebenso gilt das für die "Sichtweite" des Users Verwendet man nur einen DB User dazu, wäre das so ungefähr selbstgewähltes Eunuchentum. Dass man diese Berechtigungsstruktur nicht erneut zwischen DB Modell und DB Dateisystem einzieht, dürfte mehr oder weniger klar sein. Zuletzt: Das macht in dieser Form aber auch nur Sinn, wenn man halbwegs komfortabel mit 2-3 Stored Procs arbeiten kann. Ansonsten bleibt via DB die stumpfe Datei-in-BLOB-Speichern Variante mit Plain SQL, die aber ohne Weiteres nicht sehr "browsig" für die GF da steht. |
AW: In Verzeichnis schreiben mit anderen Benutzerrechten
Zitat:
Gruß K-H |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:21 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz