解决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命令。

 

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

 

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

 

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

userb@localhost ~ $ ssh userb@remotehost
userb@remotehost ~ $ tty
/dev/pts/2
userb@remotehost ~ $ 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的权限

userb@remotehost ~ $ sudo su - usera
[sudo] password for userb:
usera@remotehost ~ $ tty
/dev/pts/2
usera@remotehost ~ $ 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命令能执行呢?

 

usera@remotehost ~ $ script /dev/null
Script started, file is /dev/null
usera@remotehost ~ $ tty
/dev/pts/3
usera@remotehost ~ $ 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

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/545243.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

报告老板:这次的缓存事故是这样的...

事故背景公司最近安排了一波商品抢购活动,由于后台小哥操作失误最终导致活动效果差,被用户和代理商投诉了。老板让我带同事们一起复盘这次线上事故。什么原因造成的?抢购活动计划是零点准时开始,22:00 运营人员通过后台…

Oracle测试题

--1、oracle如何得知需要创建的控制文件的信息? --答:从初始化参数文件中读取--创建数据库时,系统会根据初始化参数文件中CONTROL_FILES的设置创建控制文件。--2、一个数据库至少几个控制文件?--答:一个--3、数据字典…

Jpa的@Id和@GeneratedValue的使用

Jpa的Id和GeneratedValue的使用 import lombok.Data; import javax.persistence.*; import java.math.BigInteger;Entity//将实体类首字母小写 Table(name "user")//要连接的数据库表名 Data public class UserCopy {IdGeneratedValue(strategy GenerationType.IDE…

基于Python的应用程序的虚拟环境

什么是虚拟环境? (What is Virtual Environment?) Virtual environments are very useful when the application requires a separate environment, each using its version of python and libraries for execution. Similar to virtual environment, there are pa…

隐式转换

2019独角兽企业重金招聘Python工程师标准>>> 1:隐式转换应用 1.1 隐式转换为期望类型 隐式转换为期望类型是编译器会使用隐式操作的第一个地方。一旦编译器看到了X,但是需要Y,就会检查从X到Y的隐式转换函数。例如: val…

双“11”搞促销?用贪心算法来盘他!

作者 | 王磊来源 | Java中文社群(ID:javacn666)转载请联系授权(微信ID:GG_Stone)这几年商家为了刺激消费是变着花样的推出各种各样的活动,以某多多为首的运营式电商更是让我们看到了营销的无限“…

java保留两位小数4种方法

转自: http://blog.csdn.net/ming1683/article/details/31950584种方法,都是四舍五入,例:import java.math.BigDecimal; import java.text.DecimalFormat; import java.text.NumberFormat; public class format {double f 111231…

AndroidStudio使用入门

AndroidStudio使用入门1_AndroidStudio activity的基本使用1.1_MainActivity和activity_main的初识1.2_Activity的清单文件简介1.3_几种重要文件的介绍1.4_基本布局的认识与使用1.4.1_RelativeLayout(相对布局)1.4.2_线性布局2_访问资源的方式2.1_java访问资源的方式2.2_xml访问…

java计算时间差距_硬计算和软计算之间的差异

java计算时间差距什么是计算? (What is Computing?) The process of accomplishing a particular task with the help of a computer or a computing device is known as computing. It should provide precise and accurate solutions, also it makes easy to fin…

主键字母自动生成函数

-- 动态生成字母方式主键,A-Z 大于Z自动进位【26进制数值表示】-- 参数:动态查询表和主键列 create or replace function charkey (tabName char, pkName char) return char asv_key varchar2(4); -- 表中查询出当前主键列最大值v_char varchar2(…

26.颜色值缩写

关于颜色的css样式也是可以缩写的,当你设置的颜色是16进制的色彩值时,如果每两位的值相同,可以缩写一半。 例子1: p{color:#000000;} 可以缩写为: p{color: #000;} 例子2: p{color: #336699;} 可以缩写为&a…

面试官:你说说互斥锁、自旋锁、读写锁、悲观锁、乐观锁的应用场景?

前言生活中用到的锁,用途都比较简单粗暴,上锁基本是为了防止外人进来、电动车被偷等等。但生活中也不是没有 BUG 的,比如加锁的电动车在「广西 - 窃格瓦拉」面前,锁就是形同虚设,只要他愿意,他就可以轻轻松…

计算机操作系统原理教程与实训(目录)

计算机操作系统原理教程与实训 第一章 计算机操作系统概论 1.1 操作系统的形成与发展 1.1.1 人工操作方式 1.1.2 脱机输入/输出技术 1.1.3 批处理技术 1.1.4 多道程序设计技术 1.2 操作系统的基本概念 1.2.1 操作系统的定义 1.2.2 操作系统的地位 1.2.3 操作系统的特征 1.2…

2万字,看完这篇才敢说自己真的懂线程池!

前言 线程池可以说是 Java 进阶必备的知识点了,也是面试中必备的考点,可能不少人看了一些文章后能对线程池工作原理说上一二,但这还远远不够,如果碰到比较有经验的面试官再继续追问,很可能会被吊打,考虑如下…

西南大学校园GIS平台

原文:西南大学校园GIS平台系统架构是B/S,开发语言是C#、silverlight,开发平台是.NET,数据库为sqlserver,这是我读研究生时候自己做的作品,以自己的母校为地图,进行GIS相关的功能分析,核心的模块有&#xff…

Android studio小问题解决

1_代码识别不出来问题 2_项目SDK与本地不匹配 先查看项目的SDK 增加本地SDK

使用类的银行管理系统的C ++程序

In this program, we are using the concept of C class and object, following basic operations are being performed here, 在此程序中,我们使用C 类和对象的概念,在此执行以下基本操作, Opening an account 开户 Show account info 显示…

2万字长文包教包会 JVM 内存结构

点击蓝色“Java中文社群”关注我哟加个“星标”,一起成长,做牛逼闪闪的技术人JVM ≠ Japanese Videos Man写这篇的主要原因呢,就是为了能在简历上写个“熟悉JVM底层结构”,另一个原因就是能让读我文章的大家也写上这句话&#xf…

vb.net 读写文件

读取和写入文件 以下示例将一行文本写入文件。 Write text to a file Sub WriteTextToFile() Dim file As New System.IO.StreamWriter("c:test.txt") file.WriteLine("Here is the first line.") file.Close() End Sub 以下示例将文件中的文本读取到…

Oracle 10g、11g :RAC关闭、启动、重启步骤

关闭顺序:【其他节点】-> [第一个节点]操作:step 1:{以grid用户或关闭监听: { crs_stop 监听器资源名 | srvctl stop listener } --全局|oracle用户关闭监听:{ lsnrctl stop } --单个节点}step 2:以orac…