Wie ändert man das Stammverzeichnis für einen Linux-Benutzer?

40178
Dennis Williamson

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 habe über den chrootBefehl nachgedacht, aber es scheint, als würde er nur den angegebenen Befehl ausführen, wobei das angegebene Verzeichnis als Stammverzeichnis betrachtet wird. Es scheint chrootalso nicht das zu sein, was ich brauche.

Meine Frage ist also: Was ist der Befehl, der das Stammverzeichnis des Benutzers ändert?

0
http://www.linuxquestions.org/questions/linux-general-1/lock-user-in-home-dir-161374/#post3532924 Incognito vor 14 Jahren 0
@ user257493 Wie ich verstanden habe, habe ich unter `/ etc / security / chroot.conf` folgende Zeilen hinzugefügt:` user1 / home / user1`, und `/ home / user1` wird das Stammverzeichnis für user1 sein, oder? Sollte ich etwas neu starten, damit die Änderungen an `/ etc / security / chroot.conf` wirksam werden? vor 14 Jahren 0
Ich denke, diese Frage muss geklärt werden ... JT.WK vor 14 Jahren 1
Wenn Sie alles außer dem Home-Verzeichnis nicht zugänglich machen, kann der Benutzer nicht einmal Befehle ausführen, da diese Befehle nicht in seinem Heimatverzeichnis liegen nos vor 14 Jahren 0
Ich habe dir eine neue Antwort auf deine Frage gegeben. Ich glaube nicht, dass es dir gefallen wird. Omnifarious vor 14 Jahren 0

8 Antworten auf die Frage

3

Es klingt, als würden Sie das HOME-Verzeichnis ändern, nicht das Root-Verzeichnis. Root wird immer / oder / root sein.

usermod -d /path/to/new/homedir/ username 
Ich muss die Wurzel wechseln, nicht das Zuhause. vor 14 Jahren 0
2
Omnifarious

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 Login-Rechte, nicht das Host-Betriebssystem.

Hier ist meine ursprüngliche Antwort:

Verwenden Sie einfach Berechtigungen. Dafür sind sie da. Ein Benutzer hat ohnehin keinen Schreibzugriff auf etwas anderes als / tmp und sein Home-Verzeichnis. Und sie müssen lesenden Zugriff auf /bin/,, /usr/binhaben /usr/lib, /liboder sie werden überhaupt nichts tun können.

Wenn Sie wirklich etwas Strengeres wollen, als Sie von den Berechtigungen erhalten, sollten Sie sich die Einrichtung von Selinux ansehen, um sie weiter einzuschränken.

Mit chrootnur geht nicht, Sie zu geben, was Sie wollen. Es ist wirklich kompliziert einzurichten und es gibt Wege, es zu umgehen.

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 Ändern von Benutzer1 löst, nicht den Rest der Welt. Ja, wenn das Stammverzeichnis von Benutzer1 sein Zuhause ist, hat es keinen direkten Zugriff auf Verzeichnisse wie "/ bin", aber ich kann einen symbolischen Link zu "/ bin" im Heimatverzeichnis von Benutzer1 erstellen und so entscheiden, was er sehen kann was er nicht kann vor 14 Jahren 0
@Vahagn: Durch symbolische Links kann der Benutzer auf Dinge außerhalb seines Chroot-Gefängnisses zugreifen. Hardlinks werden zwar, können sich jedoch nicht auf Dateisysteme erstrecken. `cd / home / new_guy; ln -s / bin ./bin; Chroot ls bin` vor 14 Jahren 1
2
Louis

Um sicher zu sein, dass "alles unzugänglich" hinter diesem Home-Verzeichnis liegt, 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.

1
Benoit

siehe das Handbuch von useradd. Sie müssen den -dSchalter benutzen .

Ich muss die Wurzel wechseln, nicht das Zuhause. vor 14 Jahren 0
1
nategoose

Ich denke, wenn Sie hinzufügen

if grep "\\<$\\>" /etc/jailbirds > /dev/null then echo I am not a crook else exec chroot $CWD endif 

/etc/profileAm Ende erhalten Sie möglicherweise das, wonach Sie fragen, aber es kann einige Nebenwirkungen haben, die mir nicht bewusst sind (die Übernahme des Shell-Laufs /etc/profilekann Probleme verursachen). In diesem Fall müssen Sie eine Datei erstellen, /etc/jailbirdsdie eine Liste der Benutzer ist, für die Sie chroot erstellen möchten . 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 werden

Darüber hinaus wird dies schwierig werden. Der Benutzer wird für den Zugriff nicht in der Lage sein, /procdie viel Shell - Utilities machen (wie ps, topund viele andere) nicht funktionieren. Der Benutzer kann auch nicht darauf zugreifen /dev/null, wodurch eine Menge Dinge zerstört werden.

Der Benutzer wird auch nicht auf den Zugang der Lage sein, /dev/ttydie brechen lessund morewenn es mit der Standardeingabe verwendet. 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 erhalten kann, die sich mit der Weiterleitung von stdin aus einer Pipe befassen.

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, die 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.

0
Brian Huenefeld
usermod -d /path/to/new/homedir/ username 

Das beantwortet Ihre Frage, aber ich bin nicht sicher, was Sie brauchen?

Ich muss die Wurzel wechseln, nicht das Zuhause. vor 14 Jahren 0
0
JT.WK

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

Root-Benutzer ist Gott; kann überall etwas sehen und tun. Benutzer von Puny können nur ihre eigene Domäne sehen und ausführen; Der Rest des Multiversums wird abgelehnt. bbaja42 vor 14 Jahren 0
0
user741756

Erstellen Sie einen Gastbenutzer

useradd -s /bin/sh -m guest 

Installieren Sie für sie eine Shell, die nicht von Bibliotheken von Drittanbietern abhängig ist

cd /home/guest apt-get download busybox-static dpkg -x *.deb . rm *.deb cd bin ./busybox --install . 

Ändern Sie Ihr Stammverzeichnis in / home / guest und führen Sie es als Gast aus

mkdir /home/guest/etc grep guest /etc/passwd > /home/guest/etc/passwd chroot /home/guest /bin/sh exec env -i login -f guest 

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 an einer selbstgezogenen Lösung festhalten, 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.