su+screen: “Cannot open your terminal ‘/dev/pts/0’ – please check.”

Quick tip this time.

Often enough, one is logged in as root and decides to su – to an underprivileged user. Due to the tty for the root shell being owned by the user root, the su’d environment is unable to run screen:

root@whitegirl:~# su - joe
joe@whitegirl:~$ screen
Cannot open your terminal '/dev/pts/0' - please check.
joe@whitegirl:~$

This is resolved by setting the owner of the terminal device to the target user before running su, so the user then has write privileges on the pseudo teletype device:

root@whitegirl:~# chown joe `tty`
root@whitegirl:~# su - joe
joe@whitegirl:~$ screen

And then revert it when done

[screen is terminating]
joe@whitegirl:~$ logout
root@whitegirl:~# chown root `tty`
root@whitegirl:~#