每个Hello都有回复。第二个TTY将向发送方TTY发送问候语,反之亦然:
echo 'echo hello > /dev/pts/1' > /dev/pts/0
第一个收件人应该向原始发件人发送“hello”,但事实并非如此。有什么问题?
[澄清] 我有两个shell正在运行。 / dev / pts / 1是初始发件人。
答案 0 :(得分:3)
当您将echo命令发送到/dev/pts/0
时,您实际上只是将该回音的输出发送到其他TTY的输出 - 您不发送它到其他TTY的输入缓冲区。因此,您的嵌套echo
命令将仅显示在另一个TTY上,但不会执行。
有一个ioctl()
来电TIOCSTI
可以用来伪造另一个TTY上的输入,但前提是你对其他TTY有“写入”权限。
很多年前,我记得有些朋友和我在某些版本的UNIX上发现了漏洞,这些版本没有正确地强制执行TIOCSTI的安全权限。如果root已经在某处登录了终端,则可以代表您在root命令中设置root用户的终端类型...