usando a tela em outro usuário com su

4

Então, se eu fizer isso:

su -c 'screen -dmS screenname script to run' - user to run as

Não vai funcionar. O comando screen está funcionando se for executado a partir do root, então não há problema algum.

Se eu fizer:

su - user
screen

Eu recebo:

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

O que está errado?

EDITAR: Eu tenho procurado por aí e parece que não consigo encontrar nenhuma boa solução para esse problema.

Eu vou estar indo para a próxima melhor coisa: executando as telas como root.

    
por totokaka 28.09.2012 / 11:05

3 respostas

4

O motivo é que, quando você faz login, você obtém um tty que, no seu caso, é atualmente chamado de / dev / pts / 0. Você é o único com acesso a esse tty, caso contrário, outros usuários podem mexer com sua sessão enquanto você estiver trabalhando. (Root, claro, também tem acesso, porque o root sempre tem acesso a tudo.)

Quando você su para outra pessoa, você ainda mantém o seu próprio tty - porque é onde as coisas serão mostradas. Mas agora você quer que o outro usuário que você está supondo possa assumir seu tty e começar a mostrar seu próprio conteúdo nele.

Se você confia em todos os outros servidores, ou pelo menos no outro usuário, você pode tornar o seu tty gravável para todos ou adicionar a si mesmo e a outro usuário a um grupo e torná-lo gravável para esse grupo. . Ou você pode começar a tela como você mesmo e, em seguida, su a partir de dentro dela.

    
por 28.09.2012 / 11:32
4

Existe um truque melhor :

su - user
script /dev/null
screen
    
por 07.06.2016 / 02:01
0

Você pode executar sua tela dessa maneira:

script -q -c "screen -RD" /dev/null

    
por 28.09.2012 / 14:26