2

每个 Hello 都有一个响应。第二个 TTY 将向发件人 TTY 发送一个问候,反之亦然:

echo 'echo hello > /dev/pts/1' > /dev/pts/0

第一个接收者应该向原始发送者发送“hello”,但它没有。怎么了?

[澄清]我有两个shell正在运行。/dev/pts/1 是初始发送者。

4

1 回答 1

3

当您向您发送回显命令时,/dev/pts/0实际上只是将该回显的输出发送到另一个 TTY 的输出- 您没有将它发送到另一个 TTY 的输入缓冲区。因此,您的嵌套echo命令只会显示在另一个 TTY 上,但不会执行。

有一个ioctl()调用TIOCSTI可用于在另一个 TTY 上伪造输入,但前提是您对该另一个 TTY 具有“写入”权限。

许多年前,我记得我和一些朋友在某些版本的 UNIX 上发现了漏洞,这些漏洞没有正确地执行 TIOCSTI 的安全权限。如果 root 已将终端留在某处登录,则可以让 root 用户的终端代表您输入命令...

于 2009-02-05T00:54:52.700 回答