解决screen Cannot open your terminal '/dev/pts/1'问题

转载于:http://urchin.blog.51cto.com/4356076/1153322

问题描述:

userA首先登录系统,使用screen开启了一个session,然后detach这个窗口。

userB然后登录系统,通过su - userA 变成userA,然后使用screen -r 恢复之前detached窗口,这时系统报如下错误:

Cannot open your terminal ‘/dev/pts/1‘ - please check.

解决方法:

userB在 su - userA以后,执行如下命令即可:

script /dev/null

注意: 有人提到 chmod 777 /dev/pts/1,这么干的人真是误人子弟,虽然这么做的确能解决这个问题,但是会带来极大的安全问题!!!

为什么这条命令能解决问题?

一般人看到上面这里估计就马上回去试验了,但是,等等,你不想知道为什么这个命令会有作用吗?它是怎么起作用的呢?

我们来过一遍整个的操作步骤:

首先,usera登录到系统中,我们使用tty命令查看一下分配给他的tty,然后看一下这个tty的权限,然后用户执行screen命令。

[email protected]localhost ~ $ ssh [email protected]
[email protected] ~ $ tty
/dev/pts/1
[email protected] ~ $ ls -l /dev/pts/1
crw--w---- 1 usera tty 136, 1 2011-01-09 20:14 /dev/pts/1
[email protected] ~ $ screen

我们观察上边的输出,发现usera对于/dev/pts/1具有读写权限,它所在组成员对这个tty具有写权限,其他用户不能访问这个tty。

然后,userb也登录到系统中,同样我们使用tty命令查看一下分配给他的tty,然后看一下这个tty的权限

[email protected] ~ $ ssh [email protected]
[email protected] ~ $ tty
/dev/pts/2
[email protected] ~ $ ls -l /dev/pts/2
crw--w---- 1 userb tty 136, 2 2011-01-09 20:20 /dev/pts/2

观察输出,userb被分配了/dev/pts/2,也是对于/dev/pts/2具有读写权限,它所在组成员对这个tty具有写权限,其他用户不能访问这个tty。

然后userb通过su - usera命令变成usera,同样我们使用tty命令查看一下分配给他的tty,然后看一下这个tty的权限

[email protected] ~ $ sudo su - usera
[sudo] password for userb:
[email protected] ~ $ tty
/dev/pts/2
[email protected] ~ $ ls -l /dev/pts/2
crw--w---- 1 userb tty 136, 2 2011-01-09 20:20 /dev/pts/2

AHA!!  注意了,我们看到虽然userb已经变成了usera,但是他所使用的tty并没有改变,仍然是/dev/pts/2。这就是为什么执行screen命令会报错的原因了,因为所有命令此时是使用usera帐户执行的,但是/dev/pts/2的读写权限属于userb,所以所有试图控制/dev/pts/2的访问都被拒绝了!

那么我们接下来看一下 script /dev/null做了些什么,使得screen命令能执行呢?

[email protected] ~ $ script /dev/null
Script started, file is /dev/null
[email protected] ~ $ tty
/dev/pts/3
[email protected] ~ $ ls -l /dev/pts/3
crw--w---- 1 usera tty 136, 3 2011-01-09 20:36 /dev/pts/3

AHA!!! 看到了吗?我们实际上是得到了一个新的tty ---> /dev/pts/3,因此screen命令能够执行了,因为 /dev/pts/3这个tty的所有者是usera!

解决screen Cannot open your terminal '/dev/pts/1'问题

时间: 2024-10-10 07:32:49

解决screen Cannot open your terminal '/dev/pts/1'问题的相关文章

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

使用screen命令的时候出现了下面的错误 Cannot open your terminal '/dev/pts/4' - please check. 可以使用script命令来记录这个终端会话, 执行script /dev/null 这样就可以使用screan来建立多个窗口,进行操作 Cannot open your terminal '/dev/pts/4' - please check.

/dev/tty /dev/pts

ps -ef|grep /dev/tty root 1019 1 0 May16 tty1 00:00:00 /sbin/mingetty /dev/tty1 root 1021 1 0 May16 tty2 00:00:00 /sbin/mingetty /dev/tty2 root 1023 1 0 May16 tty3 00:00:00 /sbin/mingetty /dev/tty3 root 1025 1 0 May16 tty4 00:00:00 /sbin/mingetty /de

只需一步教你解决Win10下Android Studio terminal无法使用的问题

Android Studio集成和添加了一些实用的工具,其中一个便是terminal.在Windows平台下Android Studio中的terminal在原理上实际使用的是window中的cmd控制台也就是位于C:\Windows\System32\目录下的cmd.exe.升级了win10的用户会发现,win10下的cmd比以前平台下的cmd改进了不少,但这些改进也导致了Android studio在调用cmd上出现了问题. 解决办法: 打开cmd控制台窗口,在选项中进行如下操作,如图: 然

仅仅需一步教你解决Win10下Android Studio terminal无法使用的问题

Android Studio集成和加入了一些有用的工具.当中一个便是terminal. 在Windows平台下Android Studio中的terminal在原理上实际使用的是window中的cmd控制台也就是位于C:\Windows\System32\文件夹下的cmd.exe.升级了win10的用户会发现,win10下的cmd比曾经平台下的cmd改进了不少,但这些改进也导致了Android studio在调用cmd上出现了问题. 解决的方法: 打开cmd控制台窗体,在选项中进行例如以下操作,

完美解决VMware Workstation : Could not open /dev/vmmon: No such file or directory

[email protected]:/usr/bin# cd /etc/init.d [email protected]:/usr/bin# sudo mv /usr/lib/vmware/modules/binary /usr/lib/vmware/modules/binary.old [email protected]:/usr/bin# sudo vmware-modconfig --console --install-all --appname="VMware Player"

linux screen 使用方法

使用中遇到的问题解决方法 刚开始使用screen时会报错,跟用户的权限相关. [[email protected] ~]$ screen Cannot open your terminal '/dev/pts/4' - please check. 解决方法是键入: script /dev/null 详细说明:http://urchin.blog.51cto.com/4356076/1153322/ 放一个传送门,screen的详细使用方法:http://www.ibm.com/developer

in a devstack Openstack env, how to start a service, such as aodh-listener

in terminal, when start the service, the service will run in this terminal, and if kill this terminal or command, this service will be killed. look up the other service, each service is running in a single pts. So should start a new pts and start thi

arch Linux(一)

制作启动盘 将U盘插入待装主机,设置U盘启动,重启进入系统安装界面 设置root密码 [email protected]~ # passwd 启动允许远程连接 [email protected]~ # systemctl start sshd 链接无线网络 [email protected]~ # wifi-menu 查看待装主机的IP地址 [email protected]~ # ip a 拿出MacBook我们使用远程安装 macOS:~ hhbsh$ ssh [email protecte

使用psutil模块获取电脑运行信息

psutil是python的一个用于获取cpu信息的模块,非常好使,以下附上官方的一些example: CPU-> Examples ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 >>> import psutil >>> psutil.cpu_times() scputimes(user=3961.46, nice=169.729, sy