2009-02-04 70 views
2

每個Hello都有迴應。第二TTY會招呼發送到發送方TTY反之亦然:如何在兩個TTY之間創建一個循環?

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

首屆接收器應該發送「你好」向原始發件人,但事實並非如此。哪裏不對?

[澄清]我有兩個殼運行。/dev/pts/1是最初的發件人。

+0

你有在/ dev/pts/0下運行的shell嗎? – 2009-02-05 00:14:05

回答

3

當你把你的echo命令/dev/pts/0你真的只是發送該回波輸出到其它TTY的輸出 - 你是不是發送給其他TTY的輸入緩衝區。因此,您嵌套的echo命令將簡單顯示在另一個TTY上,但不會執行。

有一個ioctl()調用TIOCSTI它可以用來僞造另一個TTY上的輸入,但前提是您對該另一個TTY具有「寫入」權限。

很多年前,我記得有些朋友和我在某些版本的UNIX上發現了漏洞,這些版本沒有正確強制執行TIOCSTI的安全權限。如果root已經讓某個終端登錄了某個地方,那麼有可能以你的名義在命令中創建root用戶的終端類型...