Linux 系统 Screen 提示 “Cannot open your terminal ‘/dev/pts/2’” 错误的解决方法

本文记录在 Linux 系统使用 screen 命令遇到的问题。一般来说本站不说明的话都是在 Ubuntu 系统下操作的。简单来说,在通过 su - user 命令切换用户后,使用 screen 会出现 “Cannot open your terminal ‘/dev/pts/2’ – please check.” 的错误。本文记录一下该错误的解决方法。

一、解决方法

切换用户后,执行下列语句即可:

script /dev/null

虽然说直接 chmod 777 /dev/pts/0 也能解决问题,但是会有安全隐患!

二、背后原理

我们使用 root 用户和 test 用户举例,先以 root 身份登录系统。

[root@localhost ~]# tty
/dev/pts/0
[root@localhost ~]# ls -l /dev/pts/0
crw--w---- 1 root tty 136, 0 Jan 24 17:49 /dev/pts/0
[root@localhost ~]# screen

用 tty 命令查看系统为 root 分配的 tty,为 “/dev/pts/0″,再确认权限,权限为 620,所有者为 root。表示仅有 root 用户有读取及写入权限,tty 组拥有写入权限,其他人无任何权限。此时执行 screen 不报错。

[root@localhost ~]# su - test
[test@localhost ~]$ tty
/dev/pts/0
[test@localhost ~]$ ls -l /dev/pts/0
crw--w---- 1 root tty 136, 0 Jan 24 17:55 /dev/pts/0
[test@localhost ~]$ screen
Cannot open your terminal '/dev/pts/0' - please check.

以 test 用户登录系统,同样查看 tty 和权限,发现即使切换了用户,但是终端的 tty 依旧没改变,所有者是 root,然而 test 用户相对 root 用户是其他人,没有任何权限,于是执行 screen 出现无法打开终端的报错提示。

[test@localhost ~]$ script /dev/null
Script started, file is /dev/null
[test@localhost ~]$ tty
/dev/pts/1
[test@localhost ~]$ ls -l /dev/pts/1
crw--w---- 1 test tty 136, 1 Jan 24 18:01 /dev/pts/1
[test@localhost ~]$ screen

执行 script /dev/null 命令后,查看 tty,发现 test 用户使用了新的 tty,所有者也成为了 test,test 用户拥有了完整的权限,执行 screen 就不会出现错误信息了。

三、参考文献和 VPS 推荐

本文参考链接:https://blog.ttionya.com/article-1318.html

本文到此就结束了,如果想要学习 Linux 技术,可以购买一台搬瓦工 VPS 进行学习,在线实时重装系统,非常适合折腾,也非常方便。推荐直达:《搬瓦工 VPS(BandwagonHost)所有便宜方案整理和推荐》。


【AD】美国洛杉矶CN2 VPS/香港CN2 VPS/日本CN2 VPS推荐,延迟低、稳定性高、免费备份_搬瓦工vps

【AD】RackNerd 推出的 KVM VPS 特价优惠,在纽约、西雅图、圣何塞和阿什本每年仅需 12.88 美元!