- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我有一个 chroot 环境的小问题,我希望你能帮助我 :)
这是我的故事:
1 - 我创建了一个用户演示(有一个像/home/demo
这样的家)并且我通过脚本/bin/chrootshell
chroot了他,如下所示:
#!/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
最佳答案
据我所知,您遇到的行为是 bash 按设计工作的。
简而言之:当 bash 作为登录 shell 启动时(即使用 --login 调用 bash 时发生的情况),它将读取 .profile
而不是 .bashrc
。当 bash 作为非登录 shell 启动时,bash 将读取 .bashrc
而不是 .profile
。
阅读关于 startup files 的 bash 手册章节获取更多信息。
为了解决这个设计决策,我的建议是创建一个包含以下内容的 .bash_profile
:
if [ -f "~/.profile" ]; then
source "~/.profile"
fi
if [ -f "~/.bashrc" ]; then
source "~/.bashrc"
fi
如果以登录 shell 启动,这将使 bash 读取 .profile
和 .bashrc
,如果以非登录方式启动,则只读 .bashrc
壳。现在你可以把需要做一次(在登录期间)的东西放在.profile
中,而每次需要做的东西放在.bashrc
中。
关于linux - 用户环境不是来自 chroot,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13570558/
关闭。这个问题需要details or clarity .它目前不接受答案。 想改善这个问题吗?通过 editing this post 添加详细信息并澄清问题. 7年前关闭。 Improve thi
我尝试让我的代码在 chroot('/root/test1') 下工作,但它不能正常工作。 但是当我删除chroot('/root/test1'),修改execl("/test2", "test2",
如果我在 shell 脚本中写 chroot /home/mayank/chroot/codebase cd SBC 当我运行这个 shell 脚本时,它确实进入了 chroot 但没有执行命令 cd
Using chroot: Why do I get error from running sudo chroot /bin /bash ? 我从文档中了解到 chroot 应该执行 /bin/bas
关闭。这个问题是not reproducible or was caused by typos .它目前不接受答案。 想改进这个问题?将问题更新为 on-topic对于堆栈溢出。 7年前关闭。 Imp
我正在使用 C 语言在 UNIX 环境中开发网络服务器。目前,我已经完成了对进程的限制,但现在我无法使用系统日志和记录到文件选项,这主要是由于更改了根路径。 程序的新根路径是它的目录。我无法从它逃脱到
这是我遇到的情况: 我已经创建了一个 debootstrap ubuntu maverick(64 位)环境。我把它放在我的 ubuntu(64 位)清醒系统上的 /env/mav/ 中。我可以 ch
我可以使用 Dir.chroot chroot Dir.chroot("/var/chroot/mychroot") 但是我怎样才能从 chroot 返回呢? 最佳答案 chroot 的意义在于您无法
我正在开发一个 web 应用程序(在 Ubuntu 服务器上运行),它将允许用户运行 Octave 代码(基本上是 Matlab)。但是,我只希望他们能够读取或修改他们指定的主文件夹中的文件夹。 我知
我有一个 chroot 环境的小问题,我希望你能帮助我 :) 这是我的故事: 1 - 我创建了一个用户演示(有一个像/home/demo这样的家)并且我通过脚本/bin/chrootshell chr
为了避免将所有共享库和配置文件复制到 chroot 文件夹中,我计划在所有共享库和配置之后立即调用 chroot("path/to/folder");文件已加载。 先前加载的库中的缓冲区溢出漏洞是否会
虽然有another question与类似的主题,它不包括共享库在 chroot jail 中使用的内存。 假设我们有几个类似的 chroot。更具体地说,完全相同的二进制文件和共享库集,它们实际上
有 ubuntu img 是由砧木制作的 在 ARM 架构中运行 但我无法对 img 进行 chroot 很多人说这是依赖问题 如果我没有可用的加载器和/或共享库, 我应该做些什么? 我有 ubunt
我需要一些帮助,以了解为什么在PHP-FPM服务启动后的几分钟内,PHP-FPM chroot的PHP脚本无法解析FQDN。 当我(重新)启动PHP-FPM服务时,它会工作(解析成功)几秒钟,然后解析
我想知道 kazoo 库中是否有一种方法可以让 Zookeeper 在连接字符串中创建 chroot 路径(如果该路径尚不存在)?有人对此有经验吗?我已阅读文档,但我还没有真正找到任何可以处理此问题的
我尝试在 chroot 中运行一些 Python 程序,但出现以下错误 Could not find platform independent libraries Could not find pl
名为 =program.c 的程序的一部分 int memoryPercent() { int memoryPercent=0; FILE *pipe1 = NULL; pip
更新 知道了!看我的解决方案(第五条评论) 这是我的问题: 我创建了一个名为“jail”的小型二进制文件,并在/etc/password 中将其设为测试用户的默认 shell。 这是经过简化的源代码:
我正在尝试将数据写入 chroot 环境中的文件。由于我是非 root 用户,他们与 chroot 通信的唯一方法是使用 schroot 命令。 目前我正在使用以下技巧来写入数据。 $ schroot
关闭。这个问题是off-topic .它目前不接受答案。 想改进这个问题吗? Update the question所以它是on-topic用于堆栈溢出。 关闭 9 年前。 Improve this
我是一名优秀的程序员,十分优秀!