Ich habe installiert jailkitauf Ubuntu 12.04und ich habe einen Benutzer Shell einzurichten /bin/bash- aber wenn es aufgerufen wird , läuft es /etc/bash.bashrcstatt/etc/profile
Wenn Sie es noch nicht verwendet jailkithaben, 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/passwdwie diesen hat:
testuser:x:1002:1003::/home/jail/./home/testuser:/usr/sbin/jk_chrootsh
In der Datei /home/jail/etc/passwdgibt 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 bashtatsächlich aufgerufen wird, /usr/sbin/jk_chrootshaber ich verstehe nicht, wie bashbestimmt 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.