Überprüfen Sie zuerst Ihre Anforderungen. Welches Problem möchten Sie lösen? Warum möchten Sie verhindern, dass Benutzer ihr Ausgangsverzeichnis verlassen? Ist es nicht eher so, dass sie nicht in bestimmten anderen Verzeichnissen stöbern sollen - beispielsweise in den Home-Verzeichnissen anderer Benutzer?
Es ist sehr schwierig zu verhindern, dass Benutzer ihr Home-Verzeichnis verlassen. Es ist eigentlich auch ein bisschen albern (Erklärung folgt). Es ist viel einfacher, Benutzer daran zu hindern, Verzeichnisse zu betreten, die sie nicht betreten sollen.
Zunächst einmal können Sie Benutzern eine sogenannte eingeschränkte Shell geben , siehe man rbash
. Dadurch wird verhindert, dass sie an cd
anderer Stelle ausgeführt werden, jedoch nur innerhalb dieser Shell. Wenn der Benutzer eine Datei startet vi
oder nano
(oder ein anderes Programm, mit dem er eine Datei öffnen kann), kann er die Dateien an einer beliebigen Stelle im System erneut öffnen. In der Tat verhindert eine eingeschränkte Hülle nicht, z cat /etc/passwd
.
Der nächste Schritt ist ein Root-Gefängnis. Mehr Infos im Community-Wiki und in dieser Frage . Obwohl ein Root-Jail Benutzer in einem ummauerten Garten sperrt, in dem sie nur auf die Dateien und Befehle zugreifen können, die Sie absichtlich dort abgelegt haben, sind Root-Jails wirklich dazu gedacht, nicht vertrauenswürdige Software, sondern Benutzer zu isolieren . Insbesondere sind sie für Software gedacht, die mit erhöhten Rechten ausgeführt werden muss - daher ein Root- Gefängnis.
Benutzern hingegen wird vertraut : Sie mussten sich authentifizieren und ohne erhöhte Berechtigungen ausführen. Daher reichen Dateiberechtigungen aus, um sie daran zu hindern, Dateien zu ändern, die sie nicht besitzen, und Dinge zu sehen, die sie nicht sehen dürfen. Um zu verhindern, dass Benutzer den Inhalt einer Datei lesen, entfernen Sie die Lesbarkeit mit chmod o-r FILE
. Um Benutzer von einem Verzeichnis fernzuhalten, machen Sie es mit weltweit unzugänglich chmod o-rwx DIR
.
Die Lesbarkeit auf der ganzen Welt ist jedoch aus gutem Grund die Standardeinstellung: Benutzer benötigen tatsächlich den größten Teil des Materials, das sich auf dem Dateisystem befindet. Schließen Sie Benutzer nicht in ihren Häusern ein, nur weil draußen Geheimnisse existieren.
Warum es ein bisschen albern ist, Benutzer in ihrem Home-Verzeichnis zu sperren
Um etwas Nützliches zu tun, müssen Benutzer auf Befehle und Anwendungen zugreifen können. Diese befinden sich in Verzeichnissen wie /bin
und /usr/bin
. Wenn Sie also nicht alle von ihnen benötigten Befehle in ihre Home-Verzeichnisse kopieren, benötigen die Benutzer Zugriff auf /bin
und /usr/bin
. Aber das ist nur der Anfang. Anwendungen benötigen Bibliotheken von /usr/lib
und /lib
, die wiederum Zugriff auf Systemressourcen benötigen, die sich in /dev
und auf Konfigurationsdateien in /etc
und befinden /usr/share
.
Dies war nur der schreibgeschützte Teil. Anwendungen werden auch wollen /tmp
und oft /var
schreiben. Wenn Sie also einen Benutzer in seinem Home-Verzeichnis einschränken möchten, müssen Sie eine Menge in dieses Verzeichnis kopieren. Tatsächlich befindet sich so ziemlich ein ganzes Basisdateisystem - das Sie bereits haben - auf /
.
Ich brauchte Zugang zu Benutzer bereitzustellen
sam
auf/var/xyz
nur und Block Auflistung Inhalt anderer Ordner innerhalb/var/
Ich habe die folgende Befehlsfolge verwendet:
Der Benutzer kann also Verzeichnisse sehen, die unter aufgelistet sind,
/var/
aber nur den Inhalt von Unterverzeichnissen sehen/var/xyz
.quelle
Neben der Einschränkung des Zugriffs auf andere Verzeichnisse, insbesondere auf die Basisverzeichnisse anderer Benutzer, wollte ich nicht, dass ein Benutzer
ll /home
die Namen der anderen Benutzer im System sieht.Um dies zu verhindern, als root ausführen
chmod 701 /home
. Dadurch wird das/home
Verzeichnis selbst natürlich zum Stammverzeichnis "read / write / execute", aber nur zu allen anderen "execute"./home
ist weiterhin für zugänglichcd
, aber Benutzer können den Inhalt nicht lesen - die Benutzerordner der anderen Benutzer und daher die Benutzernamen.quelle