Graças ao comentário de @mikeserv, descobri como revitalizá-lo.
Eu só testei isso no Linux 4.0.7, então, para versões muito anteriores ou muito posteriores, pode não funcionar.
mount /dev/pts -o remount,gid=5,mode=620
Montar um sistema de arquivos devpts em chroot sem usar a opção newinstance fez com que ele montasse a mesma "instância" de /dev/pts , contendo os mesmos ptys. Passar nenhum argumento gid , de acordo com a página man, faz com que novos ptys sejam criados com o mesmo gid que o processo que o gerou. Aparentemente, essa (falta de) opção de montagem afeta a instância inteira de devpts , portanto, o% original/dev/pts não está mais atribuindo ptys ao grupo tty . Eu ainda não sei porque o urxvt precisa que o seu ptys esteja nesse grupo enquanto o xterm não o faz.
Mais algumas notas sobre isso:
- Parece normal que
/dev/pts/ptmxtenha o modo 000 (root: root) enquanto/dev/ptmxtenha o modo 666 (root: tty). No entanto, eles apontam para o mesmo dispositivo de bloco, portanto, definirptmxmodeparece desnecessário, mas inofensivo. - O padrão
mode(600) parece funcionar, mas o tty é criado com o modo 620 de qualquer maneira. Algo pode estar mudando seu modo. Quando meu sistema inicializa, ele passamode=620, sobrescrevendo o padrãomode, então coloquei isso na linha de comando acima no interesse de restaurar melhor a funcionalidade padrão de / dev / pts. - Não defina
uid. Isso levará você a problemas de segurança ou ao mesmo problema de terminais que não geram. - Adicionar
newinstanceé opcional, mas pode melhorar a segurança. Com essa opção, os contêineres não podem montar o "real"/dev/ptsporque o sistema host não o está usando. Se isso for usado, você deve garantirptmxmode=666e que/dev/ptmxé um link simbólico parapts/ptmx. Montar uma nova instância dedevptssobre/dev/ptspode causar comportamentos estranhos em terminais existentes (por exemplo,gpgnão funciona), portanto, você deve reiniciá-los se usar essa opção.