您的基本问题是启动新进程chroot,su它们不会影响调用它们的进程。chroot创建一个新进程来运行命令su,su命令最终创建一个新的 shell 进程。正是这个新的 shell 改变了根目录。当您退出该 shell 时,它会继续执行您的脚本,而该脚本从未更改过 root。./setup.py然后在错误的上下文中执行该命令。
解决方案是在创建的过程中执行命令su。就像是:
#!/bin/bash
/usr/sbin/chroot /opt/gluu-server-2.4.2/ su -l -c "
cd /install/community-edition-setup/;
./setup.py -n -u -a -s -f setup.properties"
./setup.py如果需要与用户交互或需要控制终端,这可能不起作用。在这种情况下,您可能需要以下内容:
#!/bin/bash
/usr/sbin/chroot /opt/gluu-server-2.4.2/ /bin/bash -l -c "
cd /install/community-edition-setup/;
./setup.py -n -u -a -s -f setup.properties"
在这种情况下,脚本已经需要以 root 身份运行,但您通常需要以 root 身份调用chroot命令。