Ich habe installiert jailkit
auf Ubuntu 12.04
und ich habe einen Benutzer Shell einzurichten /bin/bash
- aber wenn es aufgerufen wird , läuft es /etc/bash.bashrc
statt/etc/profile
Wenn Sie es noch nicht verwendet jailkit
haben, finden Sie hier das Wesentliche:
- Eine "inhaftierte" Version des Systemstamms wird irgendwo erstellt, z. B. / home / jail
- Die Home-Verzeichnisse der inhaftierten Benutzer werden in diesen Ordner wie / home / jail / home / testuser verschoben
- Relavante Konfigurationsdateien werden nach / home / jail / etc / - kopiert, einschließlich eines begrenzten / etc / passwd
- Programme, auf die Sie Zugriff gewähren möchten, werden in die entsprechenden Verzeichnisse wie / bin / bash kopiert
- Wenn sich ein inhaftierter Benutzer anmeldet, wird er in / etc / jail / chrootet und kann darüber keine Dateien sehen
Ich habe also einen testuser
, der einen Eintrag /etc/passwd
wie diesen hat:
testuser:x:1002:1003::/home/jail/./home/testuser:/usr/sbin/jk_chrootsh
In der Datei /home/jail/etc/passwd
gibt es einen Eintrag wie:
testuser:1001:1003::/home/testuser:/bin/bash
Ich habe das gelesen bash(1)
und denke, das Problem ist, dass bash denkt, dass es nicht als Login-Shell aufgerufen wird:
Wenn bash als interaktive Anmeldeshell oder als nicht interaktive Shell mit der Option --login aufgerufen wird, werden zuerst Befehle aus der Datei / etc / profile gelesen und ausgeführt, sofern diese Datei vorhanden ist.
Ich verstehe , dass dies bash
tatsächlich aufgerufen wird, /usr/sbin/jk_chrootsh
aber ich verstehe nicht, wie bash
bestimmt wird, um welche Art von Shell es sich handelt und welche Startdateien ausgeführt werden sollen.
Ich würde gerne sehen, ob ich das beheben kann - aber ich verstehe nicht:
Woher weiß bash, wie es aufgerufen wird?
ps: Ich habe auch login(1)
ohne viel Glück nachgesehen.