Was macht 'script / dev / null'?

21

Jedes Mal, wenn ich mich bei einer VM mit root anmelde, subei einem Benutzerkonto und versuche, screenes zu verwenden , wird ein Fehler ausgegeben:

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

In einem Stapelüberlaufpost wurde angegeben, dass ich das Problem script /dev/nullbeheben muss, und es funktioniert, aber es erklärt immer noch nicht, warum ich etwas eingeben muss script /dev/null. Ich würde gerne verstehen, was es macht und warum ich es tippen muss.

CJL
quelle
2
> In einem Stapelüberlauf-Beitrag heißt es - es kann hilfreich sein, wenn Sie diesem Beitrag auch einen Link hinzufügen, möglicherweise in einem Kommentar.
Törzsmókus

Antworten:

27

Sie können es nicht öffnen, /dev/pts/0da es Eigentum von root ist, und nachdem Sie sich bei einem anderen Benutzer angemeldet haben, können Sie es nicht mehr über seinen Pfad öffnen, aber Sie können es weiterhin über das geöffnete Handle verwenden, das geerbt wurde aus dem übergeordneten Prozess.

script /dev/null erstellt eine weitere Pty, die dem aktuellen Benutzer gehört.

Wie auch immer, dieser Fehler / diese Einschränkung scheint in neueren Versionen von screen(z. B. 4.99.0) behoben worden zu sein, die das Handle korrekt über die SCM_RIGHTSZusatznachricht auf einem Unix-Domain-Socket an das aktuelle Terminal senden , anstatt nur den Namen von zu senden Das Terminal und der screenServer versuchen, es zu öffnen (und scheitern). Gleiches mit tmux.

Mosvy
quelle