• 定义与历史
tty是物理终端或虚拟终端的抽象,源自早期的电传打字机(Teletype)。在现代Linux中,每个物理终端或虚拟控制台(如通过Ctrl+Alt+F1~F6切换的界面)对应一个tty设备。
• 设备文件
设备文件位于 /dev/ttyN(如/dev/tty1),或虚拟终端如/dev/ttyS0(串口终端)。
• 使用场景
◦ 物理控制台(直接连接的键盘和显示器)。
◦ 通过Ctrl+Alt+Fn切换的虚拟终端。
◦ 串口终端(如嵌入式设备调试)。
• 特点
◦ 直接与内核交互,无需网络协议。
◦ 权限控制严格(如/etc/securetty可限制root登录的tty设备)。
• 定义与用途
pts是伪终端(Pseudo-Terminal)的从设备端,用于模拟终端行为。通常与ptmx(伪终端主设备)配对出现,由终端模拟器(如SSH、图形界面终端)创建。
• 设备文件
动态创建的设备位于 /dev/pts/N(如/dev/pts/0),每个会话分配一个唯一编号。
• 使用场景
◦ SSH远程登录。
◦ 图形界面中的终端模拟器(如GNOME Terminal、Konsole)。
◦ screen或tmux多路复用会话。
• 特点
◦ 通过主从设备对(ptmx和pts)实现数据转发。
◦ 支持网络传输(如SSH加密通信)。
◦ 用户权限更灵活(取决于启动进程的用户)。
特性 | tty | pts |
设备类型 | 物理终端或虚拟控制台 | 伪终端(网络/模拟终端) |
设备路径 | /dev/ttyN或/dev/ttySN | /dev/pts/N |
创建方式 | 系统启动时预分配 | 动态创建(按需生成) |
依赖关系 | 直接连接或虚拟控制台 | 需主设备(ptmx)配合 |
典型应用 | 本地控制台、串口设备 | SSH、图形终端、终端多路复用 |
• 命令示例
# 查看当前终端设备文件路径 $ tty /dev/pts/0 # 若为伪终端,显示pts;若为物理终端,显示ttyN
# 查看进程关联的终端
$ ps -p $$ # 查看当前Shell的终端信息
1. 主从设备创建
当用户通过SSH或图形终端登录时,终端模拟器(如sshd)创建一对伪终端:
◦ 主设备(ptmx):由终端模拟器控制,负责接收用户输入。
◦ 从设备(pts):关联到用户的Shell进程,接收主设备转发的内容。
2. 数据流
用户输入 → 主设备(ptmx) → 从设备(pts) → Shell进程
Shell输出 → 从设备(pts) → 主设备(ptmx) → 终端显示
• 为什么SSH会话显示为pts?
SSH通过伪终端模拟终端行为,因此会话关联到/dev/pts/N。
• 如何限制用户通过pts登录?
修改/etc/securetty文件(仅列出允许的tty设备,不包含pts)。
• tty和pts的权限差异
tty设备通常属于root:tty,而pts设备属于启动它们的用户。
tty:直接与硬件或虚拟控制台关联,适合本地操作。
pts:通过伪终端模拟,用于远程或图形环境,灵活性更高。
理解两者区别有助于排查终端权限、会话管理等问题(如SSH配置或/dev设备权限错误)。
点击加载更多