我为我的世界服务器设置了一个 chroot 监狱,由某人通过 SSH 进行管理。 chroot 已正确设置,proc 和 lib 绑定已安装到监狱的 / 目录,chroot/usr 文件夹包含 Java 17.0.7 的工作安装,chroot/etc 文件中包含 passwd/group。 chroot 用户能够创建屏幕会话并使用屏幕的所有技巧,但是当他们尝试运行输出到控制台的命令时,会出现此错误write error: Bad file descriptor
。另一个症状是,当 chroot 用户在屏幕会话内启动 Minecraft 服务器时,它不会向控制台输出任何内容,但它仍然在后台启动并运行,而不会在控制台中显示任何证据。如果 chroot 用户不在屏幕会话中,则不会出现此错误,它仅在屏幕会话内出现。
为了让 screen 在 chroot 监狱中工作,我必须绑定 mount run/screen 并使用以下命令dev/pts
集dev/ptmx
:
mount -t devpts none "chroot/dev/pts" -o ptmxmode=0666,newinstance
ln -fs "pts/ptmx" "chroot/dev/ptmx"
如果我以 root 身份启动屏幕会话并启动服务器或运行命令,则不会出现这些问题,所以我猜测它与 chroot/dev 文件夹中不存在的 stdout 和 stdin 有关。任何帮助或想法将不胜感激,我可以提供任何可能重要的附加信息。