Chaque fois que je me connecte à une machine virtuelle avec root, su
dans un compte d'utilisateur et que j'essaie de l'utiliser screen
, une erreur se produit:
Cannot open your terminal '/dev/pts/0' - please check.
Un message Stack Overflow a déclaré que je devais utiliser script /dev/null
pour le réparer, et cela fonctionne, mais cela n'explique toujours pas pourquoi je dois taper script /dev/null
. Je voudrais comprendre ce qu'il fait et pourquoi je dois le saisir.
terminal
gnu-screen
su
pty
CJL
la source
la source
Réponses:
Vous ne pouvez pas l'ouvrir
/dev/pts/0
car il appartient à root, et après avoir su-ed dans un autre utilisateur, vous ne pouvez plus l'ouvrir via son chemin, mais vous pouvez toujours l'utiliser via le handle ouvert, qui a été hérité du processus parent.script /dev/null
va créer un autre pty, appartenant à l'utilisateur actuel.Quoi qu'il en soit, ce bogue / limitation semble avoir été corrigé dans les versions récentes de
screen
(par exemple, 4.99.0), qui enverra correctement la poignée au terminal actuel via leSCM_RIGHTS
message auxiliaire sur une socket de domaine Unix, au lieu d'envoyer simplement le nom de le terminal et que lescreen
serveur essaie de l'ouvrir (et échoue). Même chose avectmux
.la source