pseudo terminais duplicados no linux

7

Em uma caixa de redhat [Red Hat Enterprise Linux AS release 4 (Nahant Update 3)]

Freqüentemente notamos duas pessoas sendo designadas para o mesmo pseudo-terminal. Por exemplo:

$who am i
user1 pts/4        Dec 29 08:38 (localhost:13.0)
user2 pts/4        Dec 29 09:43 (199.xxx.xxx.xxx)
$who -m
user1 pts/4        Dec 29 08:38 (localhost:13.0)
user2 pts/4        Dec 29 09:43 (199.xxx.xxx.xxx)
$whoami
user2

Isso causa problemas em um script porque "who am i" retorna duas linhas. Eu sei que existem diferenças entre os dois comandos e, obviamente, podemos mudar o script para corrigir o problema. Mas ainda me incomoda que dois usuários estejam sendo devolvidos com o mesmo terminal. Suspeitamos que possa estar relacionado a sessões mortas. Alguém pode explicar por que dois números (não exclusivos) de número estão sendo atribuídos e / ou como isso pode ser evitado no futuro?

    
por bobtheowl2 29.12.2009 / 17:34

3 respostas

1

Você já tentou uma versão mais recente do Red Hat? 4.3 é bastante antigo, o último 4.x-release é 4.8. Além disso, o Red Hat 5 está na versão 5.4, o que é um grande passo à frente. Se você gosta de experimentar uma versão mais recente sem o incômodo de comprar a Red Hat, pode experimentar o CentOS, que é compatível com binários da Red Hat.

    
por 01.01.2010 / 22:27
1

O conselho para atualizar seu servidor é bom.

Caso contrário, você pode atualizar alguns dos aplicativos e não outros. Quais componentes, e até que ponto atualizá-los, são "deixados como um exercício para o aluno".

Primeiro você vai querer fazer alguns testes para descobrir qual programa de emulador de terminal está sendo usado por pessoas quando isso acontece. É o Xterm? Em caso afirmativo, consulte as "Notas de versão do Red Hat Enterprise Linux 3 Atualização 8" - link

Lá você encontrará uma correção de bug para o xterm, que diz simplesmente: "não escreva a entrada double utmp"

Então, isso me levaria a supor que você provavelmente deveria atualizar o xterm para pelo menos xterm-179-6.EL3 (não me pergunte por que o número da versão diz EL3; não tenho ideia)

Espero que isso ajude!
-br

    
por 09.01.2010 / 04:15
1

Eu não consigo reproduzir esse comportamento aqui - tudo o que eu faço é limpo - mas a atualização de utmp é feita por um programa auxiliar utempter , em /usr/lib/utempter , que é chamado pelo xterm, então se xterms são sendo morto morto por algum motivo (como a memória virtual sendo esgotada) pode ser que ele não tenha a chance de limpar.

Note também que uma vulnerabilidade de segurança foi corrigida no link embora eu ache improvável que o usuário em questão esteja causando disfunções, explorando deliberadamente isso.

Veja se você pode reproduzir o comportamento iniciando o xterm em segundo plano e o matando sem ter a oportunidade de limpar o utmp:

$ who
$ xterm &
[1] 6229
$ who
$ kill -9 6229
$ who

E uma teoria do voodoo: percebo que xterm tem um cenário para tornar o comportamento do utmp mais cuidadoso. Ele é normalmente ativado por padrão e desativado colocando

XTerm*ptyHandshake:     false
em ~/.Xresources ou em todo o sistema em /etc/X11/Xresources/xterm . É improvável que seja isso, mas apenas um pensamento.

Uma solução alternativa pode ser persuadir ou compelir os usuários a usar um emulador de terminal X diferente, como rxvt , um substituto menor que responde às configurações existentes do xterm, não inclui os gráficos de desenho de linha Tektronix 4014 recurso de emulação e usa significativamente menos memória para executar.

    
por 20.01.2010 / 15:55