[Linux] Benutzer auf Ordner beschränken - Möglichkeiten gesucht

Dieses Thema im Forum "PC- und Technik-Forum" wurde erstellt von Ehemaliger Benutzer, 31. August 2014.

  1. Wie der Titel schon sagt, bin ich gerade auf der Suche nach Möglichkeiten, Benutzer auf einem Linux auf bestimmte Ordner zu beschränken.

    Das Problem:
    Momentan ist es so gelöst, dass die Benutzer per SSH Dateien lesen und schreiben können. Der Nachteil ist, dass sie sich so auch überall umschauen können. Sie können zwar nicht unbedingt irgendwelche Konfigurationen ändern, aber auf jeden Fall lesen. Und genau das sollen sie eben nicht. Das könnte man zwar über die die Zugriffsrechte der jeweiligen Dateien/Ordner regeln, aber der Aufwand wäre ziemlich groß.
    Schön wäre außerdem, wenn die Dateien relativ einfach auch der Öffentlichkeit zugänglich gemacht werden könnten.

    Meine bisherigen Ideen:
    • SSH: Zugriff und alle nötigen Befehle funktionieren. Allerdings ist es extrem aufwendig, die Benutzer durch Datei-/Ordnerrechte einzuschränken. Chrooting wäre zwar eine Möglichkeit, aber auch ziemlich aufwendig.
    • Samba-Freigabe: Statt eines SSH-Zugriffs, haben die Benutzer nur Zugriff auf eine Samba-Freigabe. Korrekt konfiguriert entfällt hier die Einschränkung, da die Benutzer nichts anderes zu sehen bekommen. Dafür müssen sie allerdings ein Netzlaufwerk einbinden.
    • Webserver + Samba: Die Dateien werden den Benutzern über eine Samba-Freigabe und der Öffentlichkeit über URLs zur Verfügung gestellt. Hier tritt natürlich das "Netzlaufwerk-Problem" wieder auf und zusätzlich muss noch ein Webserver konfiguriert werden...

    Hat jemand weitere Vorschläge? Gerne auch welche, die erstmal noch komplizierter oder problematischer erscheinen.
     
  2. Werbung (Nur für Gäste)
  3. Spiritogre

    Spiritogre Angehöriger

    Hmm, kann man nicht so was wie Truecrypt nutzen? Einfach quasi alle Ordner bzw. Laufwerke verschlüsseln und den Nutzern nur Zugriff auf die für sie gedachten geben und nur die öffentlichen halt nicht verschlüsseln?
    Schau mal den (unvollständigen) Artikel an: http://www.linux-magazin.de/Ausgaben/2011/06/Bitparade vielleicht gibt der ja schon Ideenanreize.
     
    1 Person gefällt das.
  4. Ysolda

    Ysolda Abenteurer

    Linux -- sandbox -- restricted shell

    Leider hast Du nicht erwähnt welche Linux-Distribution du benützt. :(

    Grundsätzlich besteht die Möglichkeit dem "User" in der /etc/passwd (letzte Spalte) als "Login-Prg" die "Restricted Shell" zu setzen. Also zBsp "/bin/sh -r" oder "/bin/rbash" oder "/bin/bash --restricted" (ohne die Anführungszeichen).

    Die Restricted Shell verhindert u.a das Wechseln des Heimat-Ordners.
    Siehe: https://www.gnu.org/software/bash/manual/html_node/The-Restricted-Shell.html

    Einige Distributions haben auch ein "Sandbox" Kommando ;)
    http://de.wikipedia.org/wiki/Sandbox
    http://www.admin-magazin.de/Das-Heft/2010/01/Programme-mit-SE-Linux-Sandbox-absichern

    EDIT to add:
    Es ist auch möglich eine "Virtuale Machine" (VM) aufzusetzen, und in dieser dann Linux zu installieren. Dabei kann festgelegt werden welche Ordner des Host-Systems von dieser VM benutzt werden dürfen.
    Bsp: "Oracle VM VirtualBox" https://www.virtualbox.org/
     
    Zuletzt bearbeitet: 1. September 2014
    1 Person gefällt das.
  5. Das ist der richtige Weg.
     
  6. Mein Problem ist hauptsächlich der Zugriff auf Konfigurationen des Betriebssystems bzw. von Diensten. Die kann ich leider schlecht verschlüsseln, da sie ständig benötigt werden. Mit irgendwelchen Benutzer- oder sonstigen Verzeichnissen wäre das natürlich möglich. Allerdings hätte ich hier die gleiche Problematik wie bei den normalen Linuxrechten. Ich müsste erstmal rausfinden, was ich alles verschlüsseln kann. Da kann ich mir auch die Verschlüsselung sparen und "einfach" die Zugriffsrechte nutzen.

    Es handelt sich um Raspbian, also das 08/15-OS des Raspberry Pi.

    Das sieht doch schonmal nicht schlecht aus. Aber wie sieht es da mit der Sicherheit aus (im Bezug auf daraus ausbrechen)?

    Einige Distributions haben auch ein "Sandbox" Kommando ;)
    http://de.wikipedia.org/wiki/Sandbox
    http://www.admin-magazin.de/Das-Heft/2010/01/Programme-mit-SE-Linux-Sandbox-absichern

    Hm... Wäre mal ein interessanter Ansatz, aber hier wohl eher Overkill.

    Was die Sicherheit (korrekte Umsetzung vorausgesetzt) angeht mit Sicherheit. :-D
    Momentan liebäugle ich allerdings eher mit der "Samba+Webserver"-Lösung, da Chrooting halt doch deutlich aufwendiger ist. Aber da muss ich erst nochmal ne Weile drüber nachdenken.
     
  7. Ysolda

    Ysolda Abenteurer

    @Ladyfalk: :hug: In some cases a restricted shell is used in conjunction with a chroot jail, in a further attempt to limit access to the system as a whole.
    chroot oder schroot (falls vorhanden) ist ein guter Weg.
    Mit schroot ("securely enter a chroot environment") kann man Befehle oder eine Login-Shell in einer chroot-Umgebung ausführen. http://wiki.ubuntuusers.de/schroot

    @_DICE_: Die "restricted shell" http://en.wikipedia.org/wiki/Restricted_shell gibt es bereits seit UNIX Urzeiten. Sie ist nur dann sicher, wenn die "Eingeschränkte Umgebung" keine Sicherheitslücken enthält.
    Fazit: sh -r ist einfach einzurichten, aber die eingeschränkte Shell ist nicht sicher. Ein Benutzer kann aus der eingeschränkten Umgebung ausbrechen, wenn dort ein ein Programm installiert ist, das über eine Shell-Funktion verfügt. Ein Beispiel für ein Programm welches eine Shell-Funktionalität verwendet ist der Editor vi (oder ex ... welcher durch das vi Kommando : aufgerufen wird). Um aus der eingeschränkten Shell zu entkommen genügt dann:
    Code:
     ~$ vi
    :set shell=/bin/sh
    :shell
    ~$ >
    
    Das gleiche Problem hat chroot ;) es wird auch hier eine "korrekte Umsetzung vorausgesetzt" http://de.wikipedia.org/wiki/Chroot oder hier unter Limitations http://en.wikipedia.org/wiki/Chroot
    • Unter Linux wird chroot nicht als Sicherheitsfeature bezeichnet. Wie der Benutzer root eine chroot-Umgebung verlassen kann, ist in der chroot(2)-Manpage dokumentiert.
     
    Zuletzt bearbeitet: 1. September 2014
    1 Person gefällt das.
  8. RhenDhark

    RhenDhark Bürger

    @Dice: Warum eigentlich so kompliziert? Warum legst Du nicht einfach Benutzergruppen an und regelst das einfach über die Gruppenrechte? Ebenso könntest Du das Home-Verzeichnis so sperren, das man es nach oben nicht verlassen kann, also sich nur innerhalb diesem und seinen Unterverzeichnissen bewegen darf!
    Hier könnte man dann auch ein shared-Verzeichniss zum Datenaustausch einrichten.
    Eine Option wäre vielleicht auch ein FTP-Server.

    Leider bin ich zur Zeit, für länger, unterwegs und nicht zu Hause! Ansonsten versuch ich mal auch aus dem Stegreif einpaar conf-Dateien für Dich zu erstellen.

    Gruß.HRW
     
    1 Person gefällt das.
  9. Eine Regelung über Benutzer-/Gruppenrechte hatte ich am Anfang in Betracht gezogen. Allerdings kenne ich außer einer Chroot-Umgebung keine Lösung, den Benutzer in ein Verzeichnis einzusperren. Das würde bedeuten, dass ich für jedes Verzeichnis und jede Datei, auf welche(s) die anderen Benutzer keinen Zugriff haben sollen, die Rechte entsprechend setzen müsste. In dem Fall wäre die Chroot-Lösung vermutlich einfacher umzusetzen.

    Wenn Du mir allerdings erkläst, wie ich das Home-Verzeichnis so sperren kann, dass man es nach oben nicht verlassen kann, würde ich über darüber eventuell nochmal nachdenken.

    Die Benutzer brauchen leider Zugriff auf eine Shell um Git-Kommandos ausführen zu können. Momentan habe ich das so gelöst, dass die Benutzer-Shell die Git-Shell ist. Danke nochmal an Ysolda für den Hinweis.
     
  10. RhenDhark

    RhenDhark Bürger

    HiHo!
    ...leicht verwirrt muß ich feststellen, daß Du einen Git-Server aufsetzen willst!
    -> warum nutzt Du nicht GitHub?
    ...und somit schreib ich Dir ersteinmal in den nächsten Tagen eine PM (wenn es mir besser geht)!
    -> dann sehen wir weiter...zumal Du nur einen "Sharepoint" brauchst! ;-)

    lG.HRW
     
    1 Person gefällt das.
  11. Tommy

    Tommy Hausvetter

    Bei GitHub sind mit einem Free-Account auf normalen Wege keine privaten Repositories möglich (ansonsten nur mit Fork von einem fremden privaten Repository), d.h. man müsste dann seinen Kram mit der ganzen Welt teilen. Wenn man das nicht will, muss man monatlich einen Abo-Beitrag abdrücken.
     
    1 Person gefällt das.
  12. Wie Tommy bereits schrieb, haben die mir bekannten kostenlosen Git-Hoster meist Einschränkungen, die mir nicht zusagen. Außerdem will ich meine Dateien nicht irgendeinem Hoster geben, wenn das nicht unbedingt sein muss. Bei meinem Vorhaben ist das absolut nicht nötig.
     
  13. RhenDhark

    RhenDhark Bürger

    Hiho!
    -hab immo UMTS-Stress!...und meine Lupe funktioniert hier nicht!
    -> halte mein Versprechen!!!!

    gruß.HRW
     
    1 Person gefällt das.
  14. Ysolda

    Ysolda Abenteurer

    Außer "chroot" fällt mir dazu auch nichts ein.
    Das Home-Verzeichniss kann man allerdings so sperren, dass man es überhaupt nicht verlassen kann. Dazu gibt es die "Restricted Shell" ... nicht verwechseln mit der "Remote Shell" ... wie bereits erwähnt auch nicht 100% sicher.
     
    Zuletzt bearbeitet: 10. Oktober 2014
    1 Person gefällt das.
  15. Hui, hier passiert ja noch was. :)

    Aktuell habe ich ich zwei Testbenutzer gechrootet, mal sehen, wie es läuft und ob irgendwelche Komplikationen auftreten.
     
  16. RhenDhark

    RhenDhark Bürger

    1 Person gefällt das.
  17. RhenDhark

    RhenDhark Bürger

    HiHo, Dice!
    - Hoffe, dass Du jetzt doch, gemäß Deinen eigenen Erfahrungen, Apache installiert hast und die Möglichkeiten der ".htacces" ausschöpft!
    -> wenn nicht, frag mich!...habe mal etwas ausgearbeitet!...auch wie man das Home grundsätzlich, auch über Sudo absichert...!

    lG.HRW
     
  18. Werbung (Nur für Gäste)
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden