Frage von nick2097, 36

Benutzer auf Debian Server auf Verzeichnis beschränken (ohne chroot)?

Guten Morgen :)


Ist es möglich einen User bei Debian sozusagen in ein Verzeichnis einzusperren?


Hintergrund ist folgender:

Ich besitze einen vServer auf dem eine Debian-Distribution läuft und auf diesem ein Apache-Server.

Nun möchte ich einem Bekannten einen Ordner geben, in welchem er sich eine kleine Website zusammen bauen kann und ein bisschen HTML und CSS lernt.

Ich habe schon recherchiert und stoße immer wieder auf den Begriff "chroot". Wenn ich die Vorgehensweise jedoch richtig verstehe, bekommt so der jeweilige User eine komplett eigene Umgebung mit einer kompletten Linux-Verzeichnisstruktur.

Das wäre jedoch nicht nötig, da er wirklich nur einen Ordner braucht beispielsweise ("/var/www/GEFAENGNIS") in den er direkt bei SSH-Login rein kommt, aber nicht raus darf (Auch das root-Verzeichnis sollte er nach Möglichkeit nicht betreten dürfen - also von seinem Hauptverzeichnis aus weder "cd .." noch "cd /"). In diesem darf und soll er natürlich Verzeichnisse und Dateien erstellen können.

Ein schönes Restwochenende und liebe Grüße wünscht

nick2097

Hilfreichste Antwort - ausgezeichnet vom Fragesteller
von barnim, 29

Um deinen User nur irgendwo einzusperren, reicht das hier schon beschriebene sftp + chroot voellig aus (Beispiele findet man im Netz genug, einfach mal nach "sftp chroot" googlen).

Damit hast du aber das Problem, dass die Skripte/Website des Users deinen Webserver mit runter ziehen koennen, wenn die mal schraeg laufen.

Besser ist es mit suexec und mod-fcgid fuer Apache zu arbeiten. Damit isolierst du einzelne Vhosts gegeneinander. PHP (oder Perl etc.) Prozesse laufen nur noch im spezifischen User-Kontext und koennen separat mit Limits und Configs (z.B. eigene php.ini) versehen werden.

Da du fuer obiges sowieso einen neuen User brauchst, bei dem im Idealfall home unterhalb der Vhost Verzeichnisstruktur liegt, kannst du diesem einfach ein Passwort geben, den in die sftp chroot Gruppe packen und hast den gewuenschten Effekt.

cheers | barnim

Kommentar von nick2097 ,

Auszeichnung kommt zwar etwas spät, aber besser spät als nie, oder? ;)

Habe es nun tatsächlich mit chroot/sftp gemacht und es hat geklappt so wie ich mir das vorgestellt habe. Hatte einen ganz anderen Eindruck was die chroot-Umgebung bedeutet.

Habe in Abwandlung dieser Anleitung gefolgt:

https://passingcuriosity.com/2014/openssh-restrict-to-sftp-chroot/


Expertenantwort
von guenterhalt, Community-Experte für Linux, 32

"einsperren" kannst du ihn nicht. Du kannst, wie @Drehrumbum bereits geschrieben hat, nur über die Zugriffsrechte zu /var/www/GEFAENGNIS festlegen, dass er in seinem Home-Verzeichnis und eben auch dort lesen und schreiben kann (darf).
Etwas aufpassen muss man schon, dass er nicht über die Rechte der Gruppe(n), die dieser User angehört doch woanders auch schreiben darf.

Nun möchte ich einem Bekannten einen Ordner geben, in welchem er sich
eine kleine Website zusammen bauen kann und ein bisschen HTML und CSS
lernt.

Muss das den wirklich auf einem aktiven Server geschehen?
Für solche Übungen ist doch auch ein Home-Desktop-System mit irgendeinem Linux geeignet.
Wer einen "Linux-Server" betrieben will, sollte doch immer auch ein privates Linux zu Hause haben. Dann ist auch lokal ein HTTP-Server installierbar und man muss auch keine Angst vor Fehlern haben.

Antwort
von Piotr127, 35

Eine Variante wäre, ihm eine sftp Verbindung mit lese+schreibrechten für nur dieses Verzeichnis zu geben. So kann er nur Daten hochladen und wieder löschen, darf aber nichts ausführen.

Antwort
von Drehrumbum, 33

Hallo, wenn Du einen neuen Benutzer anlegst, kann der nur in seinem Home-Verzeichnis schreiben. Wenn er nicht den Gruppen admin und adm angehört, hat er auch keine Möglichkeit, root-Rechte zu erhalten.

Lesen kann er bei Debian-Systemen alles, wo das nicht gewünscht ist, solle den Directorys mit "chmod 770 <dir>" das Leserecht für alle genommen werden. Hoffe, das hilft weiter.

Keine passende Antwort gefunden?

Fragen Sie die Community