每个 Hello 都有一个响应。第二个 TTY 将向发件人 TTY 发送一个问候,反之亦然:
echo 'echo hello > /dev/pts/1' > /dev/pts/0
第一个接收者应该向原始发送者发送“hello”,但它没有。怎么了?
[澄清]我有两个shell正在运行。/dev/pts/1 是初始发送者。
当您向您发送回显命令时,/dev/pts/0
实际上只是将该回显的输出发送到另一个 TTY 的输出- 您没有将它发送到另一个 TTY 的输入缓冲区。因此,您的嵌套echo
命令只会显示在另一个 TTY 上,但不会执行。
有一个ioctl()
调用TIOCSTI
可用于在另一个 TTY 上伪造输入,但前提是您对该另一个 TTY 具有“写入”权限。
许多年前,我记得我和一些朋友在某些版本的 UNIX 上发现了漏洞,这些漏洞没有正确地执行 TIOCSTI 的安全权限。如果 root 已将终端留在某处登录,则可以让 root 用户的终端代表您输入命令...