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

E

Ehemaliger Benutzer

Gast
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.
 
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:
Hat jemand weitere Vorschläge? Gerne auch welche, die erstmal noch komplizierter oder problematischer erscheinen.
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:
  • Like
Reaktionen: 1 Person
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.
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.

Leider hast Du nicht erwähnt welche Linux-Distribution du benützt. :(
Es handelt sich um Raspbian, also das 08/15-OS des Raspberry Pi.

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
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

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/
Hm... Wäre mal ein interessanter Ansatz, aber hier wohl eher Overkill.

Das ist der richtige Weg.
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.
 
@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:
  • Like
Reaktionen: 1 Person
@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
 
  • Like
Reaktionen: 1 Person
@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!
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.

Eine Option wäre vielleicht auch ein FTP-Server.
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.
 
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
 
  • Like
Reaktionen: 1 Person
...leicht verwirrt muß ich feststellen, daß Du einen Git-Server aufsetzen willst!
-> warum nutzt Du nicht GitHub?
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.
 
  • Like
Reaktionen: 1 Person
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.
 
...
. 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.

...
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:
  • Like
Reaktionen: 1 Person
Hui, hier passiert ja noch was. :)

Aktuell habe ich ich zwei Testbenutzer gechrootet, mal sehen, wie es läuft und ob irgendwelche Komplikationen auftreten.
 
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