GNU/Linux >> LINUX-Kenntnisse >  >> Linux

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

Ich habe mein Problem folgendermaßen gelöst:

Neue Gruppe erstellen

$ sudo addgroup exchangefiles

Das Chroot-Verzeichnis erstellen

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

Erstellen Sie das für Gruppen beschreibbare Verzeichnis

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

Geben Sie sie beide der neuen Gruppe

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

danach ging ich zu /etc/ssh/sshd_config und am Ende der Datei hinzugefügt:

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 dem Namen Obama hinzu:

$ sudo adduser --ingroup exchangefiles obama

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

$ sudo service ssh restart

Hinweis:Der Benutzer kann jetzt nichts mehr mit file tun Verzeichnis Ich meine, alle seine Dateien müssen sich im Dateiordner befinden.


Restriktionen sind ein sensibles Thema und müssen konsequent definiert werden. Was Sie tun können, ist, eine eingeschränkte Shell zu definieren für den Benutzer als seine Standard-Shell .

Zum Beispiel die Einstellung /bin/rksh (eine eingeschränkte Kornshell) anstelle der vordefinierten Shell des Benutzers als Standard-Shell für diesen Benutzer in /etc/profile .

HINWEIS: Wenn die ausführbare Datei mit diesem Namen auf Ihrem System nicht vorhanden ist, erstellen Sie einen festen Link ln /bin/ksh /bin/rksh und ksh bestimmt anhand seines Namens, ob es eingeschränkt ist oder nicht.

Die eingeschränkte Shell wird (zum Beispiel) verhindern, dass ein cd ausgeführt wird Befehl, oder einen Befehl mit einem / angeben (ein expliziter Pfad) im Aufruf und verbietet das Ändern von PATH , SHELL , oder ENV Variable, und Ausgabeumleitungen sind ebenfalls verboten.

Sie können immer noch vordefiniert bereitstellen Shell-Skripte an den Benutzer, die (unter der Kontrolle des Skript-Implementierers!) dem Benutzer erlauben, dieses spezifische Skript(e) in einer uneingeschränkten Umgebung auszuführen.


Der Befehl chroot ermöglicht es Ihnen, ein eingeschränktes Stammverzeichnis für einen Benutzer zu erstellen. Diese Frage erklärt das Konzept von chroot und wie man es benutzt.

Update:Suche nach Chroot Jail Setup on Digital Ocean , zeigt weitere Dokumentation speziell für ihre Umgebung an. Hier sind ein paar, von denen ich denke, dass sie sich auf das beziehen, was Sie brauchen könnten.

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

Wie man eingeschränkten SSH-Zugriff für in Chroot eingesperrte Benutzer erlaubt

Hier ist eines, das sich auf Jailkit bezieht, das FloHimself vorgeschlagen hat.


Linux
  1. So erstellen Sie einen Sudo-Benutzer unter Rocky Linux und CentOS

  2. So verwenden Sie sudo, um einem Nicht-Root-Benutzer die Ausführung eines bestimmten Befehls zu ermöglichen

  3. So konfigurieren Sie SSH, um Benutzer/Gruppen mit Allow- und Deny-Anweisungen einzuschränken

  4. Wie kann ich nach Dateien suchen und sie in einer Zip-Datei komprimieren?

  5. Wie zeige ich Dateinamen an, die zwei Zeichen enthalten und eines davon c ist?

So fügen Sie Benutzer unter CentOS 8 hinzu und löschen sie

So fügen Sie Benutzer unter CentOS 7 hinzu und löschen sie

Wie man Benutzer unter Debian 9 hinzufügt und löscht

So erstellen und konfigurieren Sie einen Sudo-Benutzer unter Arch Linux

So erstellen Sie einen Sudo-Benutzer unter Ubuntu und Debian

Grundlegende Linux-Verzeichnisberechtigungen und wie man sie überprüft