So beschränken Sie einen Benutzer auf einen Ordner und erlauben ihm nicht, seinen Ordner zu verschieben


28

Ich habe einen Ubuntu-Server auf Digitalocean und möchte jemandem einen Ordner für seine Domain auf meinem Server geben. Mein Problem ist, dass dieser Benutzer meine Ordner oder Dateien nicht sehen oder seinen Ordner verschieben kann.

Wie kann ich diesen Benutzer in seinem Ordner einschränken und ihm nicht erlauben, andere Dateien / Verzeichnisse anzuzeigen?


Möglicherweise möchten Sie zu diesem Zweck separate Benutzerkonten verwenden.
Martin von Wittich

Oder vielleicht Jailkit
FloHimself

chmod ist keine gute lösung, da ich es nicht für alle
ordner

Eigentlich habe ich keine Ahnung von Gruppe, weil ich sie vorher nicht benutzt habe. Kannst du mir einfach erklären, was der Vorteil davon ist?
Badr

Eine andere Methode - serverfault.com/questions/497011/… .
SLM

Antworten:


26

Ich habe mein Problem so gelöst:

Erstellen Sie eine neue Gruppe

$ sudo addgroup exchangefiles

Erstellen Sie das Chroot-Verzeichnis

$ sudo mkdir /var/www/GroupFolder/
$ sudo chmod g+rx /var/www/GroupFolder/

Erstellen Sie das gruppenschreibbare Verzeichnis

$ sudo mkdir -p /var/www/GroupFolder/files/
$ sudo chmod g+rwx /var/www/GroupFolder/files/

Gib sie der neuen Gruppe

$ sudo chgrp -R exchangefiles /var/www/GroupFolder/

danach ging ich zu /etc/ssh/sshd_configund fügte am Ende der Datei hinzu:

Match Group exchangefiles
  # Force the connection to use SFTP and chroot to the required directory.
  ForceCommand internal-sftp
  ChrootDirectory /var/www/GroupFolder/
  # Disable tunneling, authentication agent, TCP and X11 forwarding.
  PermitTunnel no
  AllowAgentForwarding no
  AllowTcpForwarding no
  X11Forwarding no

Jetzt füge ich meiner Gruppe einen neuen Benutzer mit Obama-Namen hinzu:

$ sudo adduser --ingroup exchangefiles obama

Jetzt ist alles erledigt, also müssen wir den ssh-Dienst neu starten:

$ sudo service ssh restart

Hinweis: jetzt kann der Benutzer etwas aus nicht tut fileVerzeichnis meine ich alle seine Datei in Dateiordnern sein muss.


1
Ich habe den Benutzer gewechselt, da er sudo su - obamaimmer noch die Dateien anderer sehen kann. @Badr
alper

11

Einschränkungen sind ein sinnvolles Thema und müssen konsequent definiert werden. Sie können eine eingeschränkte Shell für den Benutzer als Standard-Shell definieren .

Beispiel: Festlegen /bin/rksh(einer eingeschränkten Kornshell) anstelle der vordefinierten Shell des Benutzers als Standard-Shell für diesen Benutzer in /etc/profile.

ANMERKUNG: Wenn die ausführbare Datei mit diesem Namen auf Ihrem System nicht vorhanden ist, erstellen Sie eine feste Verknüpfung ln /bin/ksh /bin/rkshund kshbestimmen anhand des Namens, ob sie eingeschränkt ist oder nicht.

Die eingeschränkte Shell wird (beispielsweise) zu verhindern , macht einen cdBefehl oder einen Befehl mit einer Angabe /(ein expliziter Pfad) in dem Aufruf, und verweigert das Ändern der PATH, SHELLoder ENVvariabel, und Ausgangs Umleitungen sind ebenfalls verboten.

Sie können dem Benutzer weiterhin vordefinierte Shell-Skripte bereitstellen, mit denen der Benutzer (unter der Kontrolle des Skriptimplementators!) Diese spezifischen Skripte in einer uneingeschränkten Umgebung ausführen kann.


Diese Antwort wird viel einfacher sein als das Einrichten einer Chroot-Umgebung, daher habe ich sie hochgestuft.
Azhrei,

5

Mit dem Befehl chrootkönnen Sie ein eingeschränktes Stammverzeichnis für einen Benutzer erstellen. In dieser Frage werden das Konzept chrootund die Verwendung erläutert .

Update: Durch die Suche nach einem auf dem digitalen Ozean eingerichteten Chroot-Gefängnis wird eine weitere Dokumentation für die jeweilige Umgebung angezeigt. Hier ist ein paar, von denen ich denke, dass sie in Beziehung zu dem stehen, was du vielleicht brauchst.

So konfigurieren Sie Chroot-Umgebungen zum Testen auf einem Ubuntu 12.04 VPS

Gewusst wie: Eingeschränkter SSH-Zugriff für inhaftierte chroot-Benutzer

Hier ist ein Jailkit , das FloHimself vorgeschlagen hat.


ja sie erklären , sie aber sie nicht erklären , wie es zu benutzen ich mit einigen commend versucht , aber das , was ich bekommen: chroot: failed to Run Befehl ‚/ bin / bash‘: Keine solche Datei oder das Verzeichnis
badr

1
Stimmt, aber jetzt, wo Sie von chroot jail gehört haben, können Sie mehr Nachforschungen anstellen. Ich habe die Antwort mit einigen Links zu Dokumenten auf Digital Ocean aktualisiert, die weitere Erklärungen geben, die auf ihre Umgebung zugeschnitten sind.
X Tian
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.