O que 'script / dev / null' faz?

21

Toda vez que faço logon em uma VM com raiz, suem uma conta de usuário e tento usá- screenla, gera um erro:

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

Uma postagem do Stack Overflow disse que eu precisava usar script /dev/nullpara corrigi-lo e funciona, mas ainda não explica por que preciso digitar script /dev/null. Gostaria de entender o que faz e por que preciso digitá-lo.

CJL
fonte
2
> Uma postagem do Stack Overflow disse - pode ser útil se você também adicionar um link a essa postagem, talvez em um comentário.
törzsmókus 9/04
Poderia ter sido stackoverflow.com/a/44244425/340790 , por exemplo.
JdeBP

Respostas:

27

Você não pode abrir /dev/pts/0porque é de propriedade do root e, após ter processado outro usuário, não é mais possível abri-lo pelo caminho, mas ainda é possível usá-lo pelo identificador aberto, que foi herdado do processo pai.

script /dev/null criará outro arquivo, de propriedade do usuário atual.

De qualquer forma, esse bug / limitação parece ter sido corrigido nas versões recentes do screen(por exemplo, 4.99.0), que enviarão corretamente o identificador para o terminal atual através da SCM_RIGHTSmensagem auxiliar em um soquete de domínio unix, em vez de enviar apenas o nome de terminal e peça ao screenservidor para tentar abri-lo (e falhar). A mesma coisa com tmux.

mosvy
fonte