bash 可以用 stdin 和 stdout 作为 tcp 套接字执行吗

can bash be executed with stdin and stdout being a tcp socket

为了提供一些背景信息,我正在尝试了解伪终端 (pty)。伪终端在用户进程(例如 bash)看来就像是真实终端。这允许做各种好事,如 telnet、ssh 等。

我的问题是,对于像 telnet 这样的东西,是否可以只 "exec" bash 并将 stdin 和 stdout 设置为远程客户端计算机的 tcp 连接。因为如果可能的话,那么我不完全理解使用伪终端的价值

是的,这是可能的 - 事实上,这就是许多 "shellcode" 传统上针对网络服务的攻击给攻击者 shell - 但你将无法以交互方式控制它你通常会的程度。这是因为套接字不是 tty。它无法将通过线路发送的字节转换为附加进程的信号(如 ^C^Z 等),它无法将 EOF 作为数据发送,它无法完成工作控制(在 ^Z 时暂停,在后台时在输入时暂停等),并且它无法传达模式切换(规范/"cooked" 模式与原始模式)。