Starten Sie eine Chroot und gehen Sie zu einem nicht privilegierten Benutzer nach Hause

871
ZioByte

Ich muss (vorübergehend) einen nicht privilegierten Benutzer ins Gefängnis stecken.

Ich habe so etwas ausprobiert:

sudo chroot --userspec=mcon:users /wherever/chroottarget /bin/bash -i 

Das funktioniert fast, aber es wird nicht env vars gesetzt (während "sudo" tut!), Daher bekomme ich den Fehler:

bash: /root/.bashrc: Permission denied 

Wie kann ich das Problem lösen? (HINWEIS: Der obige Befehl sollte sich innerhalb eines Bash-Skripts befinden.)

UPDATE : Ich habe einen (ziemlich konvexen) Weg gefunden, um das zu tun, was ich brauche:

sudo bash -c "HOME=<jailed home> chroot --userspec=<user>:<group> <chroottarget> /bin/bash -i" 

Idealerweise sollte ich HOME aus der Jailed-Datei / etc / passwd sowie alle anderen Umgebungen (aus der Jailed-Datei / etc / profile) lesen. Diese "Lösung" wird alle Variablen in der Aufrufer-Umgebung beibehalten.

Gibt es einen besseren Weg?

1

1 Antwort auf die Frage

0
godblessfq

Sie müssen die Umgebungsvariable $ HOME an den Benutzer anpassen.

export HOME=/home/user-name