Für einen Benutzer auf einem Linux-Host muss ich außer seinem Home-Verzeichnis alles unzugänglich machen.
Ich habe gehört, dass dies normalerweise geschieht, indem das Stammverzeichnis für den Benutzer geändert wird (und es auf das Home-Verzeichnis des Benutzers gesetzt wird). Ich habe jedoch keine Möglichkeit gefunden, dies zu tun.
Ich dachte an das chroot
Befehl, aber es scheint nur den angegebenen Befehl auszuführen, wobei das angegebene Verzeichnis als Stammverzeichnis betrachtet wird. So scheint es chroot
ist nicht was ich brauche.
Meine Frage ist also: Was ist der Befehl, der das Stammverzeichnis des Benutzers ändert?
/etc/security/chroot.conf
Ich habe folgende Zeilen hinzugefügt:user1 /home/user1
, und/home/user1
wird der root für user1 sein, oder? Sollte ich etwas neu starten, um die Änderungen an vorzunehmen/etc/security/chroot.conf
wirksam werdenAntworten:
Es klingt, als würden Sie das HOME-Verzeichnis ändern, nicht das Wurzelverzeichnis. Root wird immer / oder / root sein.
quelle
Um sicher zu gehen, dass "alles unzugänglich" hinter diesem Home-Verzeichnis ist, würde ich chroot verwenden. Wenn Sie jedoch nichts tun können, wenn Sie das chrooted-Verzeichnis nicht vorbereiten, stehen Ihnen keine Binärdateien oder Bibliotheken zur Verfügung.
Die Konfiguration des FTP-Servers kann für Sie nützlich sein: http://tldp.org/LDP/solrhe/Securing-Optimizing-Linux-RH-Edition-v1.3/chap29sec296.html
Es handelt sich hierbei um vollständige Chroot-Einstellungen, um die FTP-Benutzer auf dieses Chroot-Verzeichnis zu beschränken.
quelle
Ich stehe zu dieser Antwort und es ist mir egal, ob ich ein -1 darüber bekommen habe. Dies ist nichts, was Unix auf vernünftige Weise für Sie tun kann. Sie fragen nach etwas, das praktisch unmöglich ist.
Aber es gibt eine Art und Weise, etwas zu bekommen, nach dem Sie fragen. Verwenden Sie eine virtuelle Maschine. Richten Sie eine Instanz der virtuellen Maschine für den betreffenden Benutzer ein und erteilen Sie ihm nur Anmelderechte, nicht das Host-Betriebssystem.
Hier ist meine ursprüngliche Antwort:
Verwenden Sie einfach Berechtigungen. Dafür sind sie da. Ein Benutzer hat im Allgemeinen ohnehin keinen Schreibzugriff auf etwas anderes als / tmp und sein Heimatverzeichnis. Und sie müssen Lesezugriff haben
/bin/
./usr/bin
./usr/lib
, und/lib
oder sie werden überhaupt nichts tun können.Wenn Sie wirklich etwas strengeres wollen, als Sie von Berechtigungen erhalten, sollten Sie die Einrichtung von selinux so einrichten, dass Sie sie weiter einschränken können.
Verwenden
chroot
Ich werde dir einfach nicht das geben, was du willst. Es ist wirklich kompliziert einzurichten und es gibt Wege, es zu umgehen.quelle
@Omnifarious
Ich brauche user1, um den Rest der Welt nicht sehen zu können. Wenn Sie dieses Problem mit Berechtigungen lösen, müssen Sie den Rest der Welt ändern und nicht user1. Ich brauche eine Lösung, die das Problem durch das Ändern von user1 löst, nicht den Rest der Welt. Ja, wenn sich das Stammverzeichnis von Benutzer1 in seinem Heimatverzeichnis befindet, hat es keinen direkten Zugriff auf Verzeichnisse wie/bin
, aber ich kann einen symbolischen Link erstellen/bin
im Home-Verzeichnis von user1, so dass er entscheidet, was er sehen kann und was er nicht kann.cd /home/new_guy ; ln -s /bin ./bin ; chroot . ls bin
siehe das Handbuch von
useradd
. Sie müssen das verwenden-d
Schalter.quelle
Ich denke, wenn Sie hinzufügen
bis zum Ende deiner
/etc/profile
Sie erhalten vielleicht das, wonach Sie fragen, aber es kann einige Nebenwirkungen haben, von denen ich keine Kenntnis habe (das Shell-Laufen übernehmen)/etc/profile
kann Probleme verursachen). In diesem Fall müssten Sie eine Datei erstellen/etc/jailbirds
Dies war eine Liste der Benutzer, für die Sie chroot wollten. Sie müssen auch sicherstellen, dass diese Datei vorhanden ist, und entscheiden, was bei Fehlern beim Zugriff darauf zu tun ist, um sicherzustellen, dass andere Benutzer (insbesondere root) nicht von chroot eingesperrt werdenDarüber hinaus wird dies schwierig werden. Der Benutzer kann nicht zugreifen
/proc
was viele Shell-Hilfsprogramme (wieps
.top
und viele andere) funktionieren nicht. Der Benutzer kann auch nicht darauf zugreifen/dev/null
, die viele Sachen brechen werden.Der Benutzer kann auch nicht darauf zugreifen
/dev/tty
was wird brechenless
undmore
bei Verwendung mit Standardeingabe. Die Anwendungen des Benutzers erben die Dateideskriptoren stdin, stdout und stderr open vor der Chroot, eröffnen jedoch weniger / dev / tty, so dass der Benutzer Tastatureingaben abrufen kann, um die Umleitung von stdin aus einer Pipe zu erledigen.Sie können auch nicht auf Programme oder gemeinsam genutzte Bibliotheken oder viele Dateien zugreifen, die unter / etc (z. B. / etc / protocols) liegen und von vielen Programmen verwendet werden.
All dies sind Dinge, mit denen Sie umgehen können, aber am Ende müssen Sie viel mehr Arbeit erledigen, um die Umgebung der Benutzer nutzbar zu machen, als ich denke, dass Sie dies in Betracht gezogen haben.
Wenn Sie meinen Vorschlag ausprobieren, schlage ich vor, dass Sie sehr vorsichtig sind. Es wäre leicht, es falsch zu verstehen und die Dinge durcheinander zu bringen. Ich habe das übrigens nicht getestet.
quelle
Das beantwortet Ihre Frage, aber ich bin nicht sicher, was Sie brauchen?
quelle
Ich denke, du bist leicht verwirrt. Auf das Verzeichnis / root kann nur der root-Benutzer zugreifen. Jeder Benutzer hat in der Regel ein eigenes HOME-Verzeichnis in / home /, und der Root-Benutzer des Systems besitzt / root
Wenn Sie das HOME-Verzeichnis ändern möchten, folgen Sie den anderen Antworten oder bearbeiten Sie die Datei / etc / passwd
quelle
Erstellen Sie einen Gastbenutzer
Installieren Sie eine Shell, die nicht von Bibliotheken von Drittanbietern abhängig ist
Ändern Sie das Stammverzeichnis in / home / guest und führen Sie es als Gast aus
Innerhalb der Chroot können Sie einen SSH-Server installieren und erzeugen, so dass sich der Benutzer remote anmelden kann. Sie können jedoch auf Probleme stoßen, wenn bestimmte Anwendungen auf das / proc-Dateisystem und Freunde zugreifen möchten. In diesem Fall können Sie auf LXC-Container, Namespaces, virtuelle Maschinen usw. zugreifen, wo etwas wie Schroot oder Qemu eine einfachere Option wird.
Wenn Sie bei einer selbstgezogenen Lösung bleiben, können Sie auf Sicherheitsprobleme stoßen, wenn Sie nicht vorsichtig sind (z. B. versehentlich den Besitz von / home / guest / bin an einen Gast übergeben. In diesem Fall wird der Gast beim nächsten Aufruf möglicherweise als root ausgeführt chroot).
Ich habe keine Ahnung, ob die obigen Befehle Ihren Wünschen entsprechen und / oder ob sie anfällig für Sicherheitslücken sind. Hoffe, dass sie helfen.
quelle