3. Um mal entendido do que está acontecendo.
Você não está interferindo nas sessões de texto nas identidades dos usuários. Apenas um único usuário está executando uma sessão aqui, vamos chamá-la de Alice. Alice está logada no console e executando um monte de aplicativos, incluindo alguns emuladores de terminal.
Em um desses terminais, Alice executa sudo -u bob sh
. Agora há um shell rodando sob a conta de Bob, mas o terminal é fornecido por Alice. O processo do emulador de terminal está sendo executado como o usuário alice
.
Quando você executa cat /dev/ttys42
como Alice, você está bisbilhotando e até interferindo com o emulador de terminal executado por Alice, não com o shell que é executado por Bob.
Você está vendo um fenômeno estranho quando você digita, porque cada byte é transmitido de forma um tanto aleatória para qualquer um dos processos que estão lendo entrada do terminal. Normalmente, há apenas um único processo de primeiro plano em um terminal: o mecanismo de controle de tarefas e, em particular, o gerenciamento do primeiro plano grupo de processos e o sinal SIGTTIN garantem isso.
Observe que /dev/ttys42
é de propriedade de Alice. Se Bob executar um emulador de terminal, /dev/ttys42
será de propriedade de Bob e não legível ou gravável por Alice, portanto, Alice não poderá interferir nesse nível. No entanto, se esse terminal estiver na sessão GUI de Alice, Alice poderá interferir no nível da GUI (por exemplo, bisbilhotando ou injetando pressionamentos de teclas ou fazendo com que Bob acredite que ele está interagindo com o terminal que ele iniciou quando está interagindo com um aplicativo executado) por Alice).