我有一个 chroot 环境的小问题,希望你能帮助我:)
这是我的故事:
1 - 我创建了一个用户演示(有一个类似的家/home/demo
),并通过如下脚本对他进行了 chroot /bin/chrootshell
:
#!/bin/bash
exec -c /usr/sbin/chroot /home/$USER /bin/bash --login -i
2 - 此用户禁用了通常的登录身份验证,因此我必须使用su - demo
他的身份登录
一切正常(就像所有 chrooted 系统命令或我的 java 配置)。但是每次我成为用户演示时,似乎我的 .bashrc 或 /etc/profile 都没有来源......而且我不知道为什么。
但是,如果我启动手动 bash,它会像您在此处看到的那样工作:
root@test:~# su - demo
bash-4.1$ env
PWD=/
SHELL=/bin/chrootshell
SHLVL=1
_=/bin/env
bash-4.1$ bash
bash-4.1$ env
PWD=/
SHLVL=2
SHELL=/bin/chrootshell
PLOP=export variable test
_=/bin/env
如您所见,我的$PLOP
变量(在 /.bashrc == /home/demo/.bashrc 中描述)在第二个 bash 中设置得很好,但我不知道为什么
如果您对我的问题有任何线索,请提前感谢:)
编辑:我实际上不明白的是为什么SHELL=/bin/chrootshell
?在我的 chroot 环境中,我用/bin/bash
shell声明了我的演示用户