node.js支持多用户web终端实现及安全方案
terminal(命令行)作为本地IDE普遍拥有的功能,对项目的git操作以及文件操作有着非常强大的支持。每次在命令行中输入一串命令,敲入回车,终端进程都会fork一个子进程,用来执行输入的命令,终端进程通过系统调用wait4()监听子进程退出,同时通过暴露的stdout输出子进程执行信息。只有在保证这两个功能的前提下,web伪终端才可以正式上线。关于伪终端安全性的问题,我们在文章的最后在进行讨论。父进程与主设备的关系是:父进程通过系统调用创建主设备,并获取主设备的fd。因此子进程输入输出都是与从设备的fd相关联的,子进程输出数据走的是PIPE,并从PIPE中读入父进程的命令。基于glibc提供的pty库实现伪终端后台,是没有任何安全性保证的。
下载地址
用户评论