La modalità multiutente dello schermo GNU è rotta in OS X 10.6 (Snow Leopard)


7

Sto usando lo schermo GNU per la programmazione di coppie remote. Chiamiamo l'account locale per "pair pair" dell'utente remoto. Ho le seguenti righe nella mia .screenrc:

multiuser on
acladd pairpair

Ho corso sudo chmod u+s /usr/bin/screen. Tuttavia, quando l'utente remoto tenta di connettersi al mio schermo con il comando screen -r [my_account_name]/[pid_of_screen] Ricevo il seguente messaggio:

Attach attempt with bad pid(xxx)

Il pid elencato nel messaggio di errore corrisponde al pid del processo di schermo eseguito dall'utente remoto. La procedura di schermo dell'utente remoto si blocca; la mia sessione sullo schermo continua felicemente dopo che il messaggio di errore scompare.

Ho provato ad utilizzare sia il built-in screen (a /usr/bin/screen ) e il screen disponibile da MacPorts, ma ottengo lo stesso errore in entrambi i casi.

Questo ha funzionato su OS X 10.5 (Leopard).

Ho cercato su google per il messaggio di errore, ma la maggior parte degli hit si riferiscono a qualche bug BSD del 2003 o giù di lì (che è stato corretto). Qualcun altro ha visto questo comportamento? Qualcuno ha qualche idea su come rendere il supporto multiutente nel lavoro sullo schermo in SL?


Sto avendo lo stesso problema. A seguito di questi passaggi per la connessione non funziona: slaptijack.com/system-administration/...
Benjamin Oakes

Risposte:


4

Non so se lo stai ancora vedendo, ma lo sono.

Schermo usa una chiamata per kill () con segnale zero per validare PID. La causa del problema è che kill () sta fallendo in modo imprevisto con errno EPERM. Ciò dovrebbe accadere solo se l'UID e l'EUID del processo chiamante sono diversi da zero e non corrispondono rispettivamente all'ID e all'IDID del processo di destinazione.

In questo caso particolare, l'UID dei due processi in questione è diverso e l'EUID ereditato di entrambi i processi è zero. Ciò andrebbe bene, ma come parte del controllo di integrità del PID, l'EUID di entrambi i processi è impostato sull'UID che possiede la sessione dello schermo. In questo particolare scenario, anche se entrambi gli EUID sono uguali, kill () continua a fallire con errno EPERM.

Ho segnalato l'errore 8965041 a bugreport.apple.com. Speriamo che questa sia la strada giusta per farlo correggere.

Nel frattempo, sto lavorando al problema compilando il mio binario sullo schermo in cui ho forzato CheckPid () per restituire 0.


1

Uso il server Snow Leopard e utilizzo lo schermo multiutente senza problemi, lo uso exec screen -xRR nel mio .profile per avviare la schermata, piuttosto che utilizzare PID espliciti.

Per te funziona? Se è così è un problema con la sintassi PID, piuttosto che con lo schermo multiutente stesso


No, questo non rende il lavoro con più utenti.
schustafa

0

sto usando screen per la programmazione di coppie remote. Abbiamo provato alcune soluzioni di condivisione dello schermo come iChat, Skype e VNC. Per condividere il testo, è un po 'eccessivo scrivere pixel (e difficile da leggere e scrivere in remoto), specialmente quando le connessioni Internet sono instabili.

Poiché c'è già molta fiducia implicita nella programmazione delle coppie (e nel fatto che abbiamo un computer condiviso), la situazione ha una soluzione:

  1. Crea un account utente condiviso (ad es. "Abbinamento")
  2. Dai i diritti di amministratore dell'account
  3. Aggiungi le chiavi pubbliche per gli utenti con cui avrei effettuato l'accoppiamento remoto

Gli utenti remoti possono ora accedere a SSH e partecipare alla sessione dello schermo.

Grazie a wwalker nel #screen su irc.freenode.net per l'aiuto.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.