Eine der einfachsten/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, jeden Befehl über SSH (z. B. SCP, SFTP, rsync usw.) und mehr.
Wenn Sie jemandem ein Shell-Konto geben, kann er alle weltweit lesbaren Dateien sehen. Dazu gehören viele Dateien in /etc
die für das Funktionieren des Systems erforderlich sind, einschließlich /etc/passwd
(das Benutzernamen, aber keine Passwörter enthält).
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 auch alle Abhängigkeiten davon.
Beachten Sie, dass eine Chroot nur den direkten Dateizugriff schützt. Der Benutzer kann verschiedene Dinge ausspähen, einschließlich der Namen und Argumente der laufenden Prozesse aller Benutzer (es sei denn, Sie richten zusätzliche Schutzmaßnahmen wie SELinux ein). Wenn der Benutzer nicht viel tun muss, können Sie mit einer eingeschränkten Shell strengere Einschränkungen einrichten (einschließlich des Verhinderns, dass der Benutzer seine eigenen ausführbaren Dateien erstellt), aber das Einrichten eines eingeschränkten Shell-Rechts ist sehr schwierig, also tue ich es nicht Ich kann es nicht empfehlen.
Heutzutage sind virtuelle Maschinen sehr günstig. Sie haben viele kostenlose Implementierungen zur Auswahl (User Mode Linux, VirtualBox, VMware, KVM, OpenVZ, VServer, …), und der Speicherplatz, der durch eine zusätzliche Systeminstallation belegt wird, ist minimal (und Sie benötigen ihn möglicherweise sowieso für Chroot). Eine virtuelle Maschine isoliert so ziemlich alles:Dateien, Prozesse, Netzwerke, … Sofern Sie keine sehr ungewöhnlichen Einschränkungen haben, ist dies der richtige Weg.
Eine Möglichkeit besteht darin, sie in eine eingeschränkte Shell-Sitzung zu stecken, wie z. B. rbash [bash -r].
Es ist an dieser Stelle etwas unklar, was Sie genau erreichen möchten, aber an der Oberfläche gelten Posix-ACLs für „andere“ für das neue Konto sowie alle Gruppen-ACLs für Gruppen, zu denen das Konto gehört, wie z 'Benutzer' zum Beispiel.