Wie kann ich verhindern, dass Benutzer auf etwas anderes als ihr eigenes Basisverzeichnis zugreifen?

22

Wie kann ich verhindern, dass Benutzer auf etwas anderes als ihr eigenes Basisverzeichnis zugreifen?

Zum Beispiel habe ich eine NTFS-Partition unter gemountet /media/ntfs, damit der Benutzer, wenn er sich über ssh anmeldet, diese Partition erreichen kann. Wie kann ich die Benutzer deaktivieren, cdum aus ihrem Ausgangsverzeichnis auszusteigen?

OHLÁLÁ
quelle

Antworten:

21

Ü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 cdanderer Stelle ausgeführt werden, jedoch nur innerhalb dieser Shell. Wenn der Benutzer eine Datei startet vioder 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 /binund /usr/bin. Wenn Sie also nicht alle von ihnen benötigten Befehle in ihre Home-Verzeichnisse kopieren, benötigen die Benutzer Zugriff auf /binund /usr/bin. Aber das ist nur der Anfang. Anwendungen benötigen Bibliotheken von /usr/libund /lib, die wiederum Zugriff auf Systemressourcen benötigen, die sich in /devund auf Konfigurationsdateien in /etcund befinden /usr/share.

Dies war nur der schreibgeschützte Teil. Anwendungen werden auch wollen /tmpund oft /varschreiben. 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 /.

zwets
quelle
2
Das macht für mich keinen Sinn, es könnte so viele Gründe geben, warum Sie möchten, dass ein Benutzer nur auf einen Ordner zugreifen kann. Ein Beispiel könnte darin bestehen, Zugriff zu gewähren, um Dateien von einem Server auf einen anderen zu übertragen. Ich finde es eher albern, dass jeder Benutzer stattdessen das gesamte System durchsuchen kann.
Richard
In meinem Fall richte ich einen Benutzer ein, damit Geräte ssh zur Fernverwaltung von Geräten in den Computer umkehren können. Deshalb möchte ich dieses Benutzerkonto so weit wie möglich einschränken, nur für den Fall, dass es kompromittiert wird. Ich muss nur die erfolgreiche Verbindung herstellen. Ich würde nicht sagen, dass es albern ist, es hängt nur davon ab, was Sie erreichen wollen.
John
7

Ich brauchte Zugang zu Benutzer bereitzustellen samauf /var/xyznur und Block Auflistung Inhalt anderer Ordner innerhalb/var/

Ich habe die folgende Befehlsfolge verwendet:

setfacl -R -m user:sam:--- /var/

setfacl -m user:sam:rx /var/

setfacl -R -m user:sam:rwx /var/xyz/

Der Benutzer kann also Verzeichnisse sehen, die unter aufgelistet sind, /var/aber nur den Inhalt von Unterverzeichnissen sehen /var/xyz.

Sam
quelle
2
Willkommen bei askubuntu! Ich sehe dies nicht als Antwort auf die Frage, die in Bezug auf private Verzeichnisse gestellt wurde.
Elder Geek
3
@ElderGeek Kann das OP nicht nur dieselben Befehle verwenden, sondern auch das Basisverzeichnis?
Seth
@Seth Ja, aber wäre das für den durchschnittlichen Benutzer klar?
Elder Geek
3
@Elder Ja, ich glaube es würde. Nicht perfekt, aber dennoch eine Antwort
Seth
1

Neben der Einschränkung des Zugriffs auf andere Verzeichnisse, insbesondere auf die Basisverzeichnisse anderer Benutzer, wollte ich nicht, dass ein Benutzer ll /homedie Namen der anderen Benutzer im System sieht.

Um dies zu verhindern, als root ausführen chmod 701 /home. Dadurch wird das /homeVerzeichnis selbst natürlich zum Stammverzeichnis "read / write / execute", aber nur zu allen anderen "execute". /homeist weiterhin für zugänglich cd, aber Benutzer können den Inhalt nicht lesen - die Benutzerordner der anderen Benutzer und daher die Benutzernamen.

Willman
quelle
Dies ist zwar keine strikte Antwort auf die Frage, aber dennoch sehr interessant. In einer Situation, in der Sie einen Remote-Server betreiben, auf den Clients zugreifen können, ist dies großartig. Sie können sich weiterhin wie erwartet bewegen, während die Privatsphäre der Benutzernamen anderer Kunden gewahrt bleibt.
Jack_Hu