Como posso consertar o / dev / pts após montá-lo?

4

Cometi o mesmo erro desta pergunta: PTTYs de bloqueio de chro do Debian em host

Eu montei um sistema de arquivos "devpts" dentro de um chroot, e agora o urxvt não pode criar ptys. Estranhamente, o xterm ainda pode. Remontar / dev / pts não corrige o problema.

O que posso fazer para que meu sistema volte a funcionar normalmente sem reiniciar?

    
por Score_Under 08.07.2015 / 06:25

1 resposta

4

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, definir ptmxmode 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 passa mode=620 , sobrescrevendo o padrão mode , 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 garantir ptmxmode=666 e que /dev/ptmx é um link simbólico para pts/ptmx . Montar uma nova instância de devpts 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.
por 08.07.2015 / 21:46

Tags