screen condiviso

Come condividere una sessione di screen ad altri utenti.

Il comando screen permette di creare una sessione di terminale virtuale che rimane attiva anche quando ci si scollega (detach) e ricollega (attach). Ciò permette di avviare, da shell, processi in foreground, senza che questi vengano stroncati quando ci si scollega o quando cade la connessione.

Molto utile sarebbe poter condividere una sessione di screen con altri utenti, in modo che possano seguire quello che si stà facendo o poter condividere lo stesso output; utile specie per helpdesk e programmatori.

 

screen permette la condivisione di sessioni con altri utenti, abilitando la modalità multiuser.

 

Ciò richiede una modifica dei parametri di sicurezza di default:

  • impostazione del setuid root sull'eseguibile:
# chmod u+s /usr/bin/screen
  • modifica dei permessi della cartella che contiene i socket delle sessioni attive:
# chmod 755 /var/run/screen

a questo punto è possibile attivare la modalità multiuser di screen.

 

.screensrc

La modalità multiuser di screen viene, di norma, attivata tramite la modalità comando di screen (Ctrl-a, :comando_screen).

Più comodo è poter avviare automaticamente la sessione di screen in modalità multiuser, con la configurazione degli utenti ai quali si vuole concedere l'accesso alla sessione (ACL), configurando il file .screenrc nella cartella home del proprio utente:

/home/mio_utente/.screenrc

multiuser on
acladd user1
acladd user2

 

avviare la sessione di screen

Adesso è possibile avviare una sessione di screen in modalità multiuser, assegnandogli un nome per facilitarne la gestione:

$ screen -S shared-screen

Visualizzando la lista delle sessioni di screen attive, si può verificare che sia stata effettivamente attivata la modalità multiuser:

$ screen -ls
There is a screen on:
	14526.shared-screen	(18/10/2011 18:32:49)	(Multi, detached)

 

collegarsi alla sessione screen altrui

Poichè il comando "screen -ls" elenca solo le sessioni attive del proprio utente e non si hanno i permessi per visualizzare i socket (ls /var/run/screen/*) delle sessioni di screen degli altri utenti, per rintracciare tutte le sessioni di screen attive ed individuare il nome della sessione alla quale ci si vuole collegare:

$ ps aux | grep screen

e quindi collegarsi alla sessione di screen dell'altro utente:

$ screen -x nome_altro_utente/nome_sessione_multiuser

 

scollegarsi da una sessione

Per scollegarsi da una sessione di screen, utilizzare la seguente sequenza di comandi:

Ctrl-a e poi il tasto 'D' (Ctrl-a attiva la modalità di comando di screen).

Con i comandi 'exit' o Ctrl-d, la sessione di screen viene terminata.

 

Cannot open your terminal '/dev/pts/0' - please check.

Se si è passati ad un altro utente, utlizzando il comando su (o sudo), screen cerca di utilizzare il terminale virtuale (tty) dell'utente originario, quello che ha eseguito il login al server.

Ci si può comunque collegare alla sessione di screen tramite il comando script:

$ script -c 'screen -x nome_altro_utente/nome_sessione_multiuser' /dev/null

 

 

Share this on

Share |

On same topics

Commenti

comments powered by Disqus