web-dev-qa-db-fra.com

Que fait «script / dev / null»?

Chaque fois que je me connecte à un VM avec root, su dans un compte utilisateur et que j'essaie d'utiliser screen, il génère une erreur:

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

Un message Stack Overflow a indiqué 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.

21
CJL

Vous ne pouvez pas ouvrir /dev/pts/0 car il appartient à root, et après que vous ayez su-ed un autre utilisateur, vous ne pouvez plus l'ouvrir via son chemin d'accès, mais vous pouvez toujours l'utiliser via le handle ouvert, hérité de le processus parent.

script /dev/null créera 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 le SCM_RIGHTS message auxiliaire sur une socket de domaine unix, au lieu d'envoyer uniquement le nom du terminal et que le serveur screen essaie de l'ouvrir (et échoue). Même chose avec tmux.

28
mosvy