PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Homeverzeichnis in der Chroot-Umgebung



BiberPinguin
24.09.11, 09:37
Hallo Linuxgemeinde,

ich bastel gerade an einer chroot-Lösung, die auf openssh (5.1p1, Debian lenny) basiert und bei der jeder User eine eigene chroot-Umgebung erhalten soll


Match Group chroot
ChrootDirectory /home/%u
AllowTCPForwarding no
PasswordAuthentication yes
Match

Der Zugriff soll nicht auf sftp beschränkt werden, d.h. ein bash-Zugriff mit ausgewählten Proggies ist angedacht.



Die Schwierigkeit ist nun, dass das Homeverzeichnis in der Chroot-Umgebung das des Servers ist.

Ich erläuter das Problem man detailliert anhand des Beispielusers "chrootruser"

Die /home/chrootruser/etc/passwd sieht so aus


root:x:0:0:root:/root:/bin/bash
chrootruser:x:10000:1000::/home:/bin/bash


D.h. das Homeverzeichnis des chrootruser ist auf dem Server /home/chrootruser/home


Dass die Publickey-Authentifizierung funktioniert, lautet der Eintrag in der /etc/passwd


chrootruser:x:10000:1000::/home/chrootruser/home:/bin/bash
denn das .ssh-Verzeichnis ist im Homeverzeichnis des Users in der Chroot-Umgebung


Logge ich mich nun per SSH mit dem User chrootruser ein, zeigt das Home-Verzeichnis auf die Konfiguration des Servers und nicht auf das innerhalb der chroot-Umgebung


-bash-3.2$ ls
bin dev etc home lib lib64 usr
-bash-3.2$ ls ~
ls: cannot access /home/chrootruser/home: No such file or directory
-bash-3.2$


Hat wer ne Idee, in welcher Datei ich welche Variable o.ä. anpassen muss? .bashrc und .profile halfen (mir) nicht wirklich. :-/


Gruß
Heiko

Thorashh
24.09.11, 10:01
siehe auch: http://www.linux-forum.de/homeverzeichnis-in-der-chroot-umgebung-2007727.html

Roger Wilco
24.09.11, 10:26
Weise dem Benutzer das Homeverzeichnis /home/chrootruser zu, erstelle das .ssh-Verzeichnis mit der authorized_keys Datei unter /home/chrootruser/.ssh und erstelle ein Homeverzeichnis innerhalb der chroot-Umgebung (/home/chrootruser/home/chrootruser) für den Benutzer.

BiberPinguin
24.09.11, 10:41
Hallo Roger,

ja - so mache ich es derzeit. Es läuft auf eine Verdopplung des Pfades hinaus.
Das .ssh/authorized_keys aus dem /home/chrootruser/.ssh biege ich per symlink zum /home/chrootruser/home/chrootruser/.ssh/authorized_keys um.

Das dämlich ist nur, dass ich für den Basispfad der Chroot-Umebung gerne ein Konstrukt wie
/home/chroot/chrootruser hätte, was dazu folgt, dass der gesamte Pfad dann
/home/chroot/chrootruser/home/chroot/chrootruser wäre und der gechrootete User nach dem Einloggen /home/chroot/chrootruser als sein Home wiederfindet.
Mein Wunsch wäre nun, dass das /home sein Homeverzeichnis ist - so kurz als möglich.



Gruß
Heiko

Roger Wilco
24.09.11, 10:50
Es läuft auf eine Verdopplung des Pfades hinaus.
Das .ssh/authorized_keys aus dem /home/chrootruser/.ssh biege ich per symlink zum /home/chrootruser/home/chrootruser/.ssh/authorized_keys um.
Warum? Wenn der Benutzer nicht gerade eine ssh_config verwenden will, wird das Verzeichnis /home/chrootruser/home/chrootruser/.ssh überhaupt nicht benötigt.

BiberPinguin
24.09.11, 11:57
Hallo Roger,

prinzipiel ist das Verzeichnis .ssh nicht das Problem.
Ich bastel damit nur etwas per symlink rum, um eine Software glücklich zu machen.
Diese besagte Software hat nur ein Problem damit, dass das HomeDir ~ existent sein muss. Und dieses wird der originalen Server /etc/passwd entnommen udn nicht der innerhalb der chroot-Umgebung.

Kann ich das Homedir irgendwie maniplieren? Kann ich /bin/bash oder /bin/sh oder gar einer anderen Shell etwas unterjubeln?

Gruß
Heiko

Roger Wilco
24.09.11, 11:59
Kann ich das Homedir irgendwie maniplieren?
Klar, einfach $HOME entsprechend setzen. Zumindest die bash hat nichts dagegen.

BiberPinguin
24.09.11, 12:54
Hallo Roger,

die Sache ist sehr verzwickt.

In die /home/chrooteduser/etc/profile habe ich

HOME="/home"
hinzugetragen.

Loggt man sich ein, ist ~ und $HOME tatsächlich geändert.
Das phänomenale ist nun, dass die SSH-Session nachwievor mit dem /home/chrooteduser/home arbeitet. Nach dem Login sieht der Promt so aus

Server:~/chrooteduser/home$

Er hat das alte Home nicht vergessen ....

Auch meine besagte Software möchte nachwie vor auf /home/chrooteduser/home zugreifen.


Es muss noch eine andere zu manipulieren Stelle geben ....


Gruß
Heiko