O modo multiusuário da tela GNU está quebrado no OS X 10.6 (Snow Leopard)

7

Estou usando a tela GNU para programação de pares remotos. Vamos chamar a conta local para o par 'par' do usuário remoto. Eu tenho as seguintes linhas no meu .screenrc :

multiuser on
acladd pairpair

Eu corri sudo chmod u+s /usr/bin/screen . No entanto, quando o usuário remoto tenta se conectar à minha tela com o comando screen -r [my_account_name]/[pid_of_screen] , recebo a seguinte mensagem:

Attach attempt with bad pid(xxx)

O pid listado na mensagem de erro corresponde ao pid do processo de tela executado pelo usuário remoto. O processo de tela do usuário remoto trava; minha sessão de tela continua feliz depois que a mensagem de erro desaparece.

Eu tentei usar o screen (em /usr/bin/screen ) e o screen disponíveis no MacPorts, mas recebo o mesmo erro nos dois casos.

Isso funcionou no OS X 10.5 (Leopard).

Eu pesquisei a mensagem de erro, mas a maioria dos acessos está relacionada a algum bug do BSD de 2003 ou mais (que foi corrigido). Alguém já viu esse comportamento? Alguém tem alguma idéia de como fazer suporte multiusuário no trabalho de tela no SL?

    
por schustafa 08.03.2010 / 23:43

3 respostas

4

Eu não sei se você ainda está vendo isso, mas eu sou.

A tela usa uma chamada para kill () com sinal zero para validar os PIDs. A causa do problema é que kill () está inesperadamente falhando com errno EPERM. Isso só deve acontecer se o UID e o EUID do processo de chamada forem diferentes de zero e não corresponderem ao UID e ao EUID do processo de destino, respectivamente.

Neste caso específico, o UID dos dois processos em questão é diferente e o EUID herdado de ambos os processos é zero. Isso seria ótimo, mas como parte da verificação de integridade do PID, o EUID de ambos os processos é definido como o UID que possui a sessão de tela. Nesse cenário específico, mesmo que os dois EUIDs sejam os mesmos, kill () ainda falha com o erro EPERM.

Arquivei o bug 8965041 em bugreport.apple.com. Espero que este seja o caminho certo para corrigir isso.

Nesse meio tempo, estou trabalhando em torno do problema, compilando meu próprio binário de tela, onde forcei CheckPid () a retornar 0.

    
por 07.02.2011 / 08:25
1

Eu uso o servidor Snow Leopard, e uso a tela multiusuário sem problemas - eu uso exec screen -xRR na minha .profile na tela inicial, em vez de usar PIDs explícitos.

Isso funciona para você? Se assim for, é um problema com a sintaxe PID, em vez da tela multiusuário em si

    
por 15.03.2010 / 16:15
0

Estou usando screen para programação de pares remotos. Tentamos algumas soluções de compartilhamento de tela, como o iChat, o Skype e o VNC. Para compartilhar texto, é um pouco exagerado enviar pixels (e difícil de ler e escrever remotamente), especialmente quando as conexões da Internet são escamosas.

Como há muita confiança implícita na programação em par (e no fato de que temos um computador compartilhado), a situação tem uma solução alternativa:

  1. Crie uma conta de usuário compartilhada (por exemplo, "pareamento")
  2. Conceder a essa conta direitos de administrador
  3. Adicione chaves públicas para os usuários que eu emparelharei remotamente com

Os usuários remotos podem agora acessar o SSH e entrar na sessão de tela.

Obrigado a wwalker in #screen no irc.freenode.net pela ajuda.

    
por 08.10.2010 / 19:23