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/ptmx
tenha o modo 000 (root: root) enquanto/dev/ptmx
tenha o modo 666 (root: tty). No entanto, eles apontam para o mesmo dispositivo de bloco, portanto, definirptmxmode
parece 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/pts
porque o sistema host não o está usando. Se isso for usado, você deve garantirptmxmode=666
e que/dev/ptmx
é um link simbólico parapts/ptmx
. Montar uma nova instância dedevpts
sobre/dev/pts
pode causar comportamentos estranhos em terminais existentes (por exemplo,gpg
não funciona), portanto, você deve reiniciá-los se usar essa opção.