staging.inyokaproject.org

Passwortgeschützter Zugriff auf Ordner/Dateien

Status: Ungelöst | Ubuntu-Version: Ubuntu MATE 20.04 (Focal Fossa)
Antworten |

olaf123

Anmeldungsdatum:
1. Januar 2008

Beiträge: Zähle...

Hallo!

Ein PC wird von mehreren Nutzern unter dem gleichen Userkonto für eine browserbasierte Anwendung genutzt.

Nun sollen einige der Nutzer zusätzlich Dateien auf einem NAS (WDmyCloudEx2) bearbeiten dürfen, mit jeweils eigenem Benutzernamen/Passwort. Nach dem Bearbeiten muss der Nutzer den Zugriff wieder beenden können. Die Dateien kann ich z.B. per cifs einbinden, aber dann komme ich nicht weiter.

Wie kann ich das ohne vollständiges Ab-/Anmelden vom System ermöglichen? Google Drive o.ä. wäre eine Lösung, aber kann man das nicht auch lokal realisieren?

Gruß, Olaf

chr123

Anmeldungsdatum:
19. Juli 2018

Beiträge: 1632

Google Drive o.ä. wäre eine Lösung, aber kann man das nicht auch lokal realisieren?

Lokal wären ownCloud oder Nextcloud denkbar. Siehe auch: Cloud-Dienste.

ChickenLipsRfun2eat Team-Icon

Anmeldungsdatum:
6. Dezember 2009

Beiträge: 12067

Hallo!

Du könntest auf dem Webserver NFS oder FUSE/sshfs verwenden, um die Daten dynamisch einbinden zu können. Die Nutzer erhalten dann Zugriff, wenn die Weboberfläche mit korrektem Benutzernamen und Passwort mountet. Als fiktives(!) Beispiel:

sshfs -o allow_other -o idmap=user -o uid=$WEB_UID -o gid=1234 $WEB_USER@nas.tld:/woauchimmer/$WEB_USER /hier/hat/der/user/platz/$WEB_USER -o IdentityFile=/meine/keys/key_$WEB_UID

Du könntest also für jeden berechtigten Benutzer einen Schlüssel anlegen, diesen nach Schema benennen und so eine angepasste Befehlszeile ausführen. Die Passwortprüfung läge in dem Fall bei der Webanwendung und dient nicht dem Einbinden der Freigabe, sondern ausschließlich zur Authentifizierung des Nutzers. Die Webanwendung prüft Nutzername und Passwort und gibt im Erfolgsfall die id zurück. Damit hast du den Namen WEB_USER und die WEB_UID.

Falls es sich immer um die gleichen Daten handelt und lediglich eine Nutzergruppe diese Bearbeiten können soll, wäre ein statischer mount des NAS sinnvoller. Dann wäre eine Authentifizierung lediglich in der Webanwendung interessant, um zu wissen ob der Webserver die geschützten Bereiche anzeigen soll oder nicht.

Je nach Sicherheitsbedenken gibt es mehr oder weniger komplexe Authentifizierungsbibliotheken für PHP & Co. Da kann ich dir aber keine empfehlen.

olaf123

(Themenstarter)

Anmeldungsdatum:
1. Januar 2008

Beiträge: Zähle...

Hallo & Danke schon mal.

Bei ChickenLipsRfun2eat habe ich erst gedacht, ich versteh's, hab aber dann bemerkt, dass ich sogar gar nichts verstanden habe ☺

Ich bin mir nicht sicher, ob ich mein Szenario oben gut beschrieben habe, daher nochmal anders:

Ein PC, auf dem i.d.R. ein allgemeines Userkonto "ALLE" eingeloggt ist, auf dem alle User arbeiten (in einer Software im Browser mit dortigem, individuellem Login). Einige der User müssen jedoch zusätzlich Dateien bearbeiten.

Ich suche nun eine Möglichkeit, mit der letztgenannte User - weiterhin eingeloggt im Nutzerkonto "ALLE" - per Name/Passwort auf unterschiedliche Ordner zugreifen können. Nach der Nutzung muss der User dies wieder sperren können, so dass der nächste am PC nicht auch auf die Dateien zugreifen kann.

Bisher müssen die User sich dafür entweder a) Am PC ausloggen → sich mit ihrem persönlichen Account einloggen → Datei bearbeiten → nach getaner Arbeit wieder ausloggen → das Konto "ALLE" wieder einloggen. oder b) Unter "ALLE" einen zweiten Desktop per x2go holen.

Bei a) und b) haben die User in ihren persönlichen Accounts die Dateien direkt verfügbar, gemountet per cifs vom NAS. Da die Dateien jedoch oft nur ganz kurz benötigt werden, sind die beiden Möglichkeiten sehr zeitraubend. (Bei b) ist das dann nebenbei bemerkt eine x2go-Sitzung in einer x2go-Sitzung.)

Hans19

Anmeldungsdatum:
21. Oktober 2018

Beiträge: 38

Hallo

Mit einem Shell-Skript solltest Du dies Umsetzen können.

Mit zu Hilfenahme von z. B.:

Zenity

Shell/Bash-Skripting-Guide für Anfänger (Abschnitt „Case-Anweisungen“)

Um Samba-Freigaben individuell je nach Benutzernamen (+ Passwortabfrage) Mounten bzw. Unmounten zu können mit den allgemeinen Userkonto "ALLE".

olaf123

(Themenstarter)

Anmeldungsdatum:
1. Januar 2008

Beiträge: Zähle...

Ich glaube, ich habe (fast) eine gute Lösung gefunden:

Mein NAS kann u.a. webdav. Ich habe testweise eine entsprechende Verknüpfung in thunar angelegt. Klickt ein User darauf, kommt eine entsprechende Abfrage nach Name/Passwort. Da es nur wenige User betrifft, würde ich die einfach auf dem NAS anlegen und die benötigten Ordner für sie freigeben.

Es gibt nur das Problem, dass in der Name/Passwort-Abfrage drei Optionen wählbar sind (siehe Anhang), von denen zwei in meiner Konstellation nicht gut sind, wenn sie mal versehentlich angeklickt werden - was mit absoluter Sicherheit passieren wird:

a) Forget password immediately

b) Remember password until you logout

c) Remember forever

Kann man b) und c) für dieses Menü deaktivieren? Oder zumindest die standardmäßig aktivierte Vorgabe von b) auf a) ändern?

Gruß, Olaf

Anhang

chr123

Anmeldungsdatum:
19. Juli 2018

Beiträge: 1632

olaf123 schrieb

Mein NAS kann u.a. webdav. Ich habe testweise eine entsprechende Verknüpfung in thunar angelegt. Klickt ein User darauf, kommt eine entsprechende Abfrage nach Name/Passwort. Da es nur wenige User betrifft, würde ich die einfach auf dem NAS anlegen und die benötigten Ordner für sie freigeben.

Genau das kannst du doch auch für das smb Protokoll machen, dafür brauchst du nicht webdav. Auch hier hast du das Problem, das die Benutzer den Mount wieder händisch unmounten müssen. Was vergessen werden kann, womit andere Benutzer wieder auf das NAS zugreifen können (was jedoch nicht gewollt ist).

Den Dialog an sich kannst du nicht anpassen.

ChickenLipsRfun2eat Team-Icon

Anmeldungsdatum:
6. Dezember 2009

Beiträge: 12067

olaf123 schrieb:

Ein PC, auf dem i.d.R. ein allgemeines Userkonto "ALLE" eingeloggt ist, auf dem alle User arbeiten (in einer Software im Browser mit dortigem, individuellem Login). Einige der User müssen jedoch zusätzlich Dateien bearbeiten.

Müssen diese Daten über die unbenannte Browsersoftware eingebunden werden? Ansonsten kann jeder auch mittels ssh/sftp und dem normalen Dateidialog seine Daten einhängen, unabhängig vom Login. Oder eben per sshfs und passwortgeschütztem Key. Ich bevorzuge da mal ssfs, da du von entfernten Sitzungen sprichst.

a) Am PC ausloggen → sich mit ihrem persönlichen Account einloggen → Datei bearbeiten → nach getaner Arbeit wieder ausloggen → das Konto "ALLE" wieder einloggen.

Das wäre generell der sicherere Weg. Ein ALLE-Konto birgt ja immer eine Gefahr, da jeder im Homeverzeichnis rumpfuschen kann. Oder läuft der Browser im Kiosk-Modus?

b) Unter "ALLE" einen zweiten Desktop per x2go holen.

c) Mit Ctrl-Alt-Fn auf ein paralleles tty wechseln ginge auch. Das ist zwar ein recht alter Weg, funktioniert aber noch immer super.

Da die Dateien jedoch oft nur ganz kurz benötigt werden, sind die beiden Möglichkeiten sehr zeitraubend.

Dann beschreibe mal dein Setup konkret. Also soweit ich verstanden habe, hast du:

  • einen lokalen PC, an dem mehrere Nutzer arbeiten sollen (Benutzerkonto ALLE)

  • Ein NAS im (lokalen?) Netzwerk, auf dem weitere Daten liegen, die bei Bedarf eingebunden werden sollen

  • Eine Weboberfläche für irgendwas, die aber für den Login herhalten soll (warum?)

Angenommen ich habe einen solchen PC, immer an, Benutzerkonto ALLE und möchte gerne auf meine persönlichen Daten auf dem NAS zugreifen, dann könnte ich das ja recht einfach über sshfs.

Auf dem NAS:
/home/benutzer/meine/daten
/home/anderer/meine/daten
Als Beispiel für die verschiedenen Zugriffsziele.

Auf dem PC:

  • benutzer:

    ALLE@pc [~]› sshfs benutzer@NAS:meine/Daten/ /hier/hin/
  • anderer

    ALLE@pc [~]› sshfs anderer@NAS:meine/Daten/ /hier/hin/

Wenn der Nutzer fertig ist: fusermount -u /hier/hin.
Das Beispiel ist nun ganz ohne Schlüssel oder sonstwas, eine simple SSH-Passworteingabe-Verbindung, nur dass du anstatt eines Logins ein virtuelles FUSE-Dateisystem bekommst.

olaf123

(Themenstarter)

Anmeldungsdatum:
1. Januar 2008

Beiträge: Zähle...

Vielen Dank für eure Ideen. Ich muss mir wohl einiges in Ruhe anschauen, so komme ich nicht hinterher.

@ ChickenLipsRfun2eat:

Ich habe ein kleines Netzwerk, ursprünglich über viele Jahre ausschließlich Ubuntu + x2go + pxe-Boot → ThinClients. Es ging nur um Dateien/Office, jeder Nutzer hatte sein persönliches Nutzerkonto. Die Dateien liegen auf einem NAS, eingebunden per fstab/cifs.

Dann kam vor einiger Zeit zwangsweise (aus Papier wurde Digital) eine Software dazu, die nur unter Windows läuft. Dort, wo die neue Software benötigt wurde, habe ich die ThinClients durch Windows-Rechner ersetzt. Die wenigen Nutzer, die dort zusätzlich an Dateien ran müssen, erledigten das seit dem in einer x2go-Sitzung von Windows aus, da ich die Win-Rechner nur als Übergangslösung gesehen habe.

Zum Jahreswechsel konnte ich die o.g. Windows-Software durch eine browserbasierte Variante (Cloud) ersetzen und werde nun die Arbeitsstationen wieder auf mein o.g. Ubuntu-Szenario umstellen. Das Ubuntu-System baue ich bei der Gelegenheit parallel neu auf.

Die betreffenden Arbeitsstationen werden überwiegend für die browserbasierte Software (und vorher die für Windows) genutzt, daher ist das Szenario anders als früher. Und für die Nutzer, die an Dateien müssen, wäre es halt schön, wenn sie sich nicht Ausloggen → Einloggen ... usw. müssten, sondern stattdessen die betreffenden Ordner per Passwort öffnen könnten.

Ctrl-Alt-Fn / tty wäre eine super Möglichkeit, wenn a) man dort nach Name/Passwort ohne manuelles "startx", "exit" usw. direkt eine grafische Sitzung bekommen könnte b) das unter pxe-x2go überhaupt angezeigt würde (nur schwarzer Bildschirm, blinkender Cursor) Bzgl. b) fehlt mir das Wissen über die diesbzgl. Funktionsweise von x2go.

Die Logindaten der browserbasierten Software kann ich nicht direkt nutzen, da die Daten in einer externen Cloud ohne weitere Zugriffsmöglichkeit liegen. Ist aber auch nicht notwendig.

Wenn ich aus Deinem letztgenannten Beispiel mit sshfs zwei kleine Scripte mit Abfrage von Benutzername und Passwort, dann könnte eine gute Lösung sein. Kann man Verbindungen per sshfs, webdav u.ä. eigentlich auch zeitgesteuert bei nicht-Benutzung beenden, falls der Nutzer das Unmounten vergisst?

ChickenLipsRfun2eat Team-Icon

Anmeldungsdatum:
6. Dezember 2009

Beiträge: 12067

olaf123 schrieb:

a) man dort nach Name/Passwort ohne manuelles "startx", "exit" usw. direkt eine grafische Sitzung bekommen könnte

Ging schon immer. Bei X wäre das bspw. die ~/.xinitrc, falls das Paket installiert ist. Falls du die Möglichkeit hast auf ctrl-alt-F1 zu wechseln, kannst du da auch normal grafisch einloggen, zumindest bei GDM.

Bzgl. b) fehlt mir das Wissen über die diesbzgl. Funktionsweise von x2go.

Die kann ich dir auch nicht geben, ich nutze das nicht.

Wenn ich aus Deinem letztgenannten Beispiel mit sshfs zwei kleine Scripte mit Abfrage von Benutzername und Passwort, dann könnte eine gute Lösung sein. Kann man Verbindungen per sshfs, webdav u.ä. eigentlich auch zeitgesteuert bei nicht-Benutzung beenden, falls der Nutzer das Unmounten vergisst?

Ja, dafür gibt es die Option ServerAliveInterval. Der Standard bei sshfs ist, die Verbindung ohne timeout aufzubauen, wie bei SSH auch, damit es nicht zu fehlenden Lese-/Schreiboperationen kommt. Falls die Verbindung dann mal abbricht, hängt der Prozess auch. Da könntest du mit fusermount -zu MOUNTPOINT versuchen zu beenden — bei wirklich fehlender Synchronisation bleibt er aber weiter hängen. Dann musst du den Prozess abschiessen — kommt aber eigentlich nie vor.

Ändert aber nichts an der Tatsache, das andere Nutzer dann auch Zugriff auf diese Daten haben, während sie gemountet sind. Das liegt aber am Benutzerkonto „ALLE“. Mir wäre da zu viel Faktor Mensch drin 😀

chr123

Anmeldungsdatum:
19. Juli 2018

Beiträge: 1632

autofs kann zwar mounts nach Inaktivität unmounten, erfordert aber die Hinterlegung von username und password, was hier nicht geht.

Systemd hat wohl auch eine Möglichkeit, inaktive SMB Shares zu unmounten (StopWhenUnneeded oder TimeoutIdleSec). Sofern eine systemd unit es zulässt, username und password interaktiv einzugeben und die Share nach Inaktivität automatisch zu unmounten, wäre es wohl eine Option.

Antworten |