Antworten:
Eine der einfachsten und effizientesten Methoden , um zu steuern, was ein Benutzer tun kann, ist lshell .
lshell ist eine in Python codierte Shell, mit der Sie die Umgebung eines Benutzers auf begrenzte Befehlssätze beschränken, Befehle über SSH aktivieren / deaktivieren (z. B. SCP, SFTP, rsync usw.), Benutzerbefehle protokollieren, Zeitbeschränkungen implementieren können. und mehr.
Wenn Sie jemandem ein Shell-Konto geben, kann er alle weltweit lesbaren Dateien sehen. Dies umfasst viele Dateien /etc
, die für das Funktionieren des Systems erforderlich sind, einschließlich /etc/passwd
(die Benutzernamen, aber keine Kennwörter enthalten).
Wenn Sie dem Benutzer erlauben, sich nur innerhalb einer Chroot anzumelden, kann er die Dateien außerhalb der Chroot nicht sehen. Das bedeutet, dass Sie genügend Programme, Bibliotheken usw. in die Chroot einfügen müssen - alles, worauf der Benutzer Zugriff haben muss, und jede Abhängigkeit davon.
Beachten Sie, dass eine Chroot nur den direkten Dateizugriff schützt. Der Benutzer kann verschiedene Dinge überwachen, einschließlich der Namen und Argumente der laufenden Prozesse aller Benutzer (es sei denn, Sie richten zusätzliche Schutzfunktionen wie SELinux ein). Wenn der Benutzer nicht viel tun muss, können Sie strengere Einschränkungen (einschließlich der Verhinderung, dass der Benutzer seine eigenen ausführbaren Dateien erstellt) mit einer eingeschränkten Shell festlegen. Das Einrichten einer eingeschränkten Shell ist jedoch sehr schwierig. Ich kann es nicht empfehlen.
Virtuelle Maschinen sind heutzutage sehr billig. Sie haben viele kostenlose Implementierungen zur Auswahl (Benutzermodus Linux, VirtualBox, VMware, KVM, OpenVZ, VServer usw.), und der von einer zusätzlichen Systeminstallation verwendete Speicherplatz ist minimal (und Sie benötigen ihn möglicherweise trotzdem für chroot). Eine virtuelle Maschine isoliert so ziemlich alles: Dateien, Prozesse, Netzwerke usw. Sofern Sie keine ungewöhnlichen Einschränkungen haben, ist dies der richtige Weg.
Eine Möglichkeit besteht darin, sie in eine eingeschränkte Shell-Sitzung zu verschieben, z. B. rbash [bash -r].
Es ist an dieser Stelle etwas unklar, was genau Sie erreichen möchten. Auf der Oberfläche gelten jedoch die Posix-Acls für "Andere" für das neue Konto sowie alle Gruppen-Acls für Gruppen, zu denen das Konto gehört, z 'Benutzer' zum Beispiel.
Beachten Sie, dass Teile von /etc
auch für nicht privilegierte Benutzer lesbar sein müssen. Wenn es Dinge gibt /etc
, die nicht lesbar sein sollten, aber vorhanden sind, haben Sie größere Probleme und sollten mindestens das Berechtigungsprüfungs- / Korrekturprogramm Ihrer Distribution ausführen.
Ein Gefängnis ist der einfachste Weg, drakonische Beschränkungen einzurichten. Es gibt andere Möglichkeiten, z. B. das Einrichten von SElinux und das Einrichten eines sehr eingeschränkten Sicherheitskontexts für den Benutzer.