一,
关于终端的一些基本概念
tty、pty 和 pts 是在类 Unix 系统(包括 Linux)中与终端交互相关的概念。它们各自代表不同的方面,并且有着密切的关联。
-
tty (Teletype)
- tty 原指老式的电传打字机,后来泛指任何类型的终端设备。
- 在现代Linux系统中
/dev/tty*
表示实际或虚拟的终端接口,例如/dev/tty1
到/dev/tty6
通常是系统的本地控制台(文本模式登录界面),而/dev/tty
指向当前进程关联的控制终端,这里请注意,本地这个词是要重点突出的!!!!!!!!!!另一个是真实的服务器,比如下图,我这个就是tty,虽然是VMware的虚拟机
-
pty (Pseudo-TTY, 伪终端)
- pty 是一种软件模拟的终端设备,它提供了一种机制,使得一个进程可以像操作真正的终端一样与另一个进程进行交互,即使后者不是直接连接到物理TTY设备上。
- 伪终端由两部分组成:一个“主设备”和一个“从设备”。主设备通常称为
ptmx
(pseudo-terminal master multiplexer),从设备一般表示为/dev/pts/*
,如/dev/pts/0
、/dev/pts/1
等。 - 当应用程序(如 ssh、telnet 或者终端模拟器如 gnome-terminal)打开一个pty时,操作系统会创建一对pty设备,其中一方(slave端,即pts)用于接受用户的输入并显示输出,另一方(master端)则可以被服务端程序读写,从而实现远程或者本地的命令行交互。
-
pts (Pseudo-Terminal Slave, 伪终端从设备)
- pts 是伪终端的一部分,是用户通过终端模拟器或网络协议(如SSH)登录后使用的那部分逻辑终端,它模拟了物理TTY的行为,允许非本地用户获得类似于本地控制台的交互体验。
- 当你在 SSH 连接到一台远程服务器时,你实际上是在使用一个 pts 设备,可以通过执行
tty
命令查看当前shell所在的pts设备,例如输出可能是/dev/pts/2
。
例如,我这个xshell的登录窗口就是pts了
总结:
- tty 通常指的是所有类型的终端接口,包括物理终端和虚拟终端。
- pty 是一种软件模拟的终端设备,它可以模拟真实终端的功能,使得远程或本地进程能够像对待真实的TTY那样工作。
- pts 是 pty 的一部分,具体是指伪终端的从设备,它是与用户交互的实际入口点,在许多情况下用于支持远程登录和本地命令行应用的子进程。
二、
终端管理的意义
通过w,who,tty这些命令可以查看到有哪些终端是登录的,登录的终端是否是符合我们的预期,例如,有不怀好意的人登录了云服务器,那么,其实通过w命令,我们是能初步的判断哪些人是非法的,哪些人是合法合规的登录
为什么这么说呢?例如,现在我的服务器有两个登录,一个是tty1,一个是pts/0 ,而pts/0 是从我的网关登录的,那么,这就可以确定,我的网络里只有我自己啦
如果此时把from里的IP封禁掉,自然的就登录不了了
06:53:46 up 29 min, 2 users, load average: 0.00, 0.01, 0.01
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root tty1 06:44 9:06 0.00s 0.00s -bash
root pts/0 192.168.123.1 06:25 2.00s 0.01s 0.00s w
[root@centos7 ~]# who
root tty1 2024-03-07 06:44
root pts/0 2024-03-07 06:25 (192.168.123.1)
三、
t掉其它终端的用户
这个其实非常简单,一个命令的事情(此命令无回显,也就是输出):
pkill -kill -t tty1
想要t掉另一个登录,自然就是下面的命令了(此命令无回显,也就是输出):
pkill -kill -t pts/0
🆗,排查系统重启记录以及登录流水:
[root@centos7 ~]# last
root pts/0 192.168.123.1 Thu Mar 7 07:12 still logged in
reboot system boot 3.10.0-1062.el7. Thu Mar 7 07:11 - 07:21 (00:09)
root tty1 Thu Mar 7 06:44 - 07:09 (00:25)
root pts/0 192.168.123.1 Thu Mar 7 06:25 - down (00:45)
reboot system boot 3.10.0-1062.el7. Thu Mar 7 06:24 - 07:10 (00:46)
root pts/0 192.168.123.1 Tue Mar 5 23:56 - crash (1+06:28)
root pts/0 192.168.123.1 Tue Mar 5 21:44 - 23:44 (02:00)
root pts/1 192.168.123.1 Sat Mar 2 19:09 - 08:37 (13:27)
root pts/0 192.168.123.1 Sat Mar 2 18:22 - 08:37 (14:14)
reboot system boot 3.10.0-1062.el7. Sat Mar 2 18:19 - 07:10 (4+12:51)
root pts/1 192.168.123.1 Sat Mar 2 05:53 - crash (12:26)
root pts/0 192.168.123.1 Sat Mar 2 05:19 - crash (13:00)
reboot system boot 3.10.0-1062.el7. Sat Mar 2 05:19 - 07:10 (5+01:51)
root pts/1 192.168.123.1 Fri Mar 1 05:42 - crash (23:37)
root pts/0 192.168.123.1 Fri Mar 1 04:57 - crash (1+00:21)
reboot system boot 3.10.0-1062.el7. Fri Mar 1 04:57 - 07:10 (6+02:13)
reboot system boot 3.10.0-1062.el7. Wed Feb 28 05:11 - 05:11 (00:00)
root pts/0 192.168.123.1 Mon Jun 19 02:20 - crash (254+02:50)
reboot system boot 3.10.0-1062.el7. Mon Jun 19 02:20 - 05:11 (254+02:51)
root pts/0 192.168.123.1 Mon Jun 19 02:11 - crash (00:08)
reboot system boot 3.10.0-1062.el7. Mon Jun 19 02:10 - 05:11 (254+03:01)
root pts/0 192.168.123.1 Sun Jun 18 17:55 - crash (08:14)
reboot system boot 3.10.0-1062.el7. Sun Jun 18 17:51 - 05:11 (254+11:20)
root tty1 Sun Jun 18 17:50 - 17:51 (00:00)
root pts/0 192.168.123.1 Sun Jun 18 17:50 - crash (00:01)
reboot system boot 3.10.0-1062.el7. Sun Jun 18 17:43 - 05:11 (254+11:28)
root tty1 Sun Jun 18 17:21 - 17:21 (00:00)
reboot system boot 3.10.0-1062.el7. Sun Jun 18 17:19 - 17:21 (00:01)
root tty1 Sun Jun 18 16:41 - 09:19 (-7:-21)
reboot system boot 3.10.0-1062.el7. Sun Jun 18 16:10 - 17:21 (01:10)
reboot system boot 3.10.0-1062.el7. Sun Jun 18 08:49 - 17:21 (08:32)
wtmp begins Sun Jun 18 08:49:26 2023
[root@centos7 ~]# date
Thu Mar 7 07:21:27 CST 2024
可以看到,最后一次重启时间是7点11重启的,也就是第二行的倒数第三列
🆗,本文仅仅做为一个简单的记录,很多东西不写记不住,感觉稍微有点意思