Ok, compartilhar uma tela com screen
é possível, mas mais interessante do que eu pensava.
- Requer
screen
para ser setuid para root, para que possa acessar o
soquetes de outros usuários. (Pode-se pensar que isso poderia ser feito para trabalhar
com apenas setgid, mas eu não verifiquei se screen
pode ser compilado
dessa forma.)
-
A documentação dos comandos multiusuário é um pouco sobre o lado da luz, o que significa que configurar isso não é tão simples assim. Além disso, embora você possa definir ACLs para outros usuários, parece não existir uma opção para imprimir as ACLs atuais.
Dito isso, pude fazer com que funcionasse, por alguns valores de "trabalho".
Primeiro, verifique se ele tem privilégio suficiente e corrija as permissões em /var/run/screen
:
chmod u+s /usr/bin/screen
chmod 755 /var/run/screen
Em seguida, inclua alguns comandos de configuração em um arquivo:
$ cat shared.screen.rc
multiuser on
aclumask ?-wx
aclumask ??-wx
addacl foo
aclchg foo -x ?
aclchg foo +x detach,help,next,prev,windows,info,select
multiuser
ativa o modo multiusuário, aclumask
limita o acesso padrão para todos os usuários e, em seguida, addacl
permite (todos) acesso ao usuário foo
. Os comandos aclchg
removem o acesso execute ( -x
) a todos os comandos ( ?
) e, em seguida, permitimos alguns comandos benignos novamente.
Em seguida, a execução de screen -c shared.screen.rc
cria uma tela à qual o usuário foo
pode se conectar:
foo$ screen -ls bar/
There is a suitable screen on:
18839.pts-2.test (08/21/16 22:09:07) (Multi, detached)
foo$ screen -r bar/
Escrever na tela e usar a maioria dos comandos resulta em um erro. No entanto, o modo de cópia parece funcionar. Além disso, a tela inicial com screen -rd bar/
como o usuário não proprietário expulsa o usuário proprietário, mesmo que você imagine que isso não seja possível. screen -RRD
também funciona e efetua logout do usuário original. Mesmo que você possa desaprovar pow_detach
e detach
(o que deve ser divertido para o segundo usuário), isso não parece afetar isso. Divertido.
É claro que, se você não se importa e fica feliz em permitir que outros usuários mexam com sua tela, usar multiuser on
e addacl foo
deve ser suficiente. Não que eu esteja dizendo que você deveria.