SSH를 통해 누군가가 관리하는 마인크래프트 서버용 chroot Jail을 설정했습니다. chroot가 올바르게 설정되고, proc 및 lib 바인딩이 감옥의 / 디렉토리에 설치되고, chroot/usr 폴더에는 Java 17.0.7의 작동 설치가 포함되며, passwd/group은 chroot/etc 파일에 포함됩니다. chroot 사용자는 screen 세션을 생성하고 screen의 모든 기능을 사용할 수 있지만 콘솔에 출력되는 명령을 실행하려고 하면 이 오류가 발생합니다 write error: Bad file descriptor
. 또 다른 증상은 chroot 사용자가 스크린 세션 내에서 Minecraft 서버를 시작할 때 콘솔에 아무것도 출력하지 않지만 콘솔에 어떤 증거도 표시하지 않고 여전히 백그라운드에서 시작 및 실행된다는 것입니다. 이 오류는 chroot 사용자가 screen 세션에 있지 않은 경우 발생하지 않으며 screen 세션 내에서만 발생합니다.
chroot 감옥에서 screen이 작동하려면 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"
루트로 스크린 세션을 시작하고 서버를 시작하거나 명령을 실행하면 이러한 문제가 발생하지 않으므로 stdout 및 stdin이 chroot/dev 폴더에 없는 것과 관련이 있는 것으로 추측됩니다. 어떤 도움이나 아이디어라도 대단히 감사하겠습니다. 중요할 수 있는 추가 정보를 제공해 드릴 수 있습니다.