1 基于busybox的telnetd
Busybox集成了telnetd功能,有两种选择:第一,使用inetd管理telnetd的启动,当有telnet连接时由inetd启动;第二,直接打开telnetd守护进程,监听telnet连接。本文选择的是直接打开telnetd守护进程,那么在编译busybox时必须做如下选择。
[] telnetd [] Support standalone telnetd (not inetd only) |
---|
2 内核对telnetd的支持
telnet是一种非常老的远程登录技术,linux内核配置时默认并不支持。要想内核支持telnet,必须选择两项功能。<br /> (1)Unix 98 PTY;<br />(2)dev/pts file system for Unix98 PTYs<br /> 根据对linux2.6.20内核配置的经验,只要选择了第一项功能,那么第二项功能就会自动被选中。因此在内核配置项中,找不到第二项。
Device Drivers —-> Character devices —-> [*] Unix98 PTY support |
---|
在系统运行是,通过cat /proc/filesystems命令可以看到devpts文件系统是否被支持。
3 根文件系统相关修改
3.1 挂载devpts文件系统
首先应该确保在根文件系统目录下存在/dev/pts目录;其次,在/etc/fstab文件中添加如下挂载语句。
devpts /dev/pts devpts gid=5,mode=620 0 0 |
---|
这样在系统启动后,会根据fstab文件挂载devpts文件系统的目录。<br /> 或者,可以选择系统启动后手动挂载。
mount -t devpts devpts /dev/pts |
---|
3.2 添加/dev下ptmx文件
首先看这样一段话,说明了ptmx文件的作用。
A pseudo terminal (PTY) is a software device consisting of two halves: a master and a slave. The slave device behaves identical to a physical terminal; the master device is used by a process to read data from and write data to the slave, thereby emulating a terminal. Typical programs for the master side are telnet servers and xterms. Linux has traditionally used the BSD-like names /dev/ptyxx for masters and /dev/ttyxx for slaves of pseudo terminals. This scheme has a number of problems. The GNU C library glibc 2.1 and later, however, supports the Unix98 naming standard: in order to acquire a pseudo terminal, a process opens /dev/ptmx; the number of the pseudo terminal is then made available to the process and the pseudo terminal slave can be accessed as /dev/pts/. What was traditionally /dev/ttyp2 will then be /dev/pts/2, for example. |
---|
其次,应该在/dev下建立ptmx设备节点。
mknod -m 666 ptmx c 5 2 |
---|
4 运行telnetd
/sbin/telnetd -l /sbin/vt100 |
---|