telnet 密码问题
时间:2009-06-09 来源:mlch1816
<meta http-equiv="CONTENT-TYPE" content="text/html; charset=utf-8"><title></title><meta name="GENERATOR" content="OpenOffice.org 1.1.5 (Linux)"><meta name="CREATED" content="20090609;16164500"><meta name="CHANGED" content="16010101;0"> <style> </style>
转贴: 进入busybox源代码目录,选择telnet,telnetd.后 确保在ramdisk的sbin目录下存在inetd和in.telnetd或telned。在ramdisk中的mnt/etc目录中,确保存在文件fstab,service,inetd.conf,passwd文件 确保fstab文件中存在none /dev/pts devpts mode=0622 0 0这一行 确保services文件中存在telnet 23/tcp 这一行 确保inetd.conf中存在telnet stream tcp nowait root /sbin/in.telnetd in.telnetd 确保passwd文件中存在root::0:0:root:/:/bin/sh,表示没有密码的root帐号 在kernal的代码中,通过makemenuconfig,在Character devices中选中Unix98 PTY support在File systems中选中/dev/pts file system for Unix98 PTYs退出后make zImage即可 在ramdisk的启动文件mnt/etc/init.d/rcS中,在mount –a的后面下一行加入inetd,使系统启动的时候就加载telnetd服新建inetd.conf文件,内容如下: # telnetstream tcp nowait root /usr/sbin/telnetd 运行inetd inetd.conf 在网上google了一天,最终可以确定要使用telnetd,内核必须配置以下项: dev/pts file system for Unix98 PTYs Unix98 PTY support (256) Maximum number of Unix98 PTYs in use (0-2048) 可我使用的2.6.14.1的内核,make menuconfig根本找不到这些配置项!那么内核是否支持这些选项呢?cat /proc/filesystems发现已支持devpts文件系统,那么uinx98 pty呢? 查看内核的Kconfig和Makefile文件,发现只要CONFIG_UNIX98_PTYS=y就会编译支持devpts文件系统和unix98的功能。而选择了嵌入式CPU内核会默认CONFIG_UNIX98_PTYS=y。所以我的内核已经支持telnet。 fstab文件中也加载了devpts文件系统: devpts /dev/pts devpts defaults 00 inittab文件中也指明了telnet的动作: tty0::askfirst:-/bin/sh 为什么还不行呢? 困惑!后来仔细想想,应该是设备文件节点的问题。我在开发板上移植2.6内核和驱动时一直没有使用devfs。因为devfs虽然方便,但同时也阻止了对设备文件节点的了解,且2.6内核已放弃了devfs。 那么使用telnet应该创建那些文件节点呢?devpts会在/dev/pts下自动创建节点,还有什么呢?google了一会没有答案。后来忽然想起Kconfig文件中好象些说明,再去看一看,原来是这样: 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. 是因为缺少ptmx设备文件!查看Documentation/devices.txt文件,好了。 mknod -m 666 ptmx c 5 2 再试试,OK可以telnet开发板了! 我是直接使用的busybox的telnetd,busybox支持用inetd管理telnetd,有兴趣的朋友可以试 .进入busybox源代码目录,选择telnet,telnetd.然后make;make install并制作ramdisk 2.确保在ramdisk的sbin目录下存在inetd和telnetd 3.在ramdisk中的mnt/etc目录中,确保存在文件fstab,service,inetd.conf,passwd文件 4.确保fstab文件中存在 none /dev/pts devpts mode=0622 0 0 这一行 5.确保services文件中存在 telnet 23/tcp 这一行 6.确保inetd.conf中存在 telnet stream tcp nowait root /sbin/telnetd telnetd 7.确保passwd文件中存在 root::0:0:root:/:/bin/sh ,表示没有密码的root帐号 8.在kernal的代码中,通过make menuconfig, 在Character devices中选中 Unix98 PTY support 退出后make zImage 9.在BusyBox源码中,通过make menuconfig,选中dev/pts file system for Unix98 PTYs 退出后make;make install 10.在ramdisk的启动文件mnt/etc/init.d/rcS中,在mount –a的后面下一行加入 inetd或者telnet /bin/ash,使系统启动的时候就加载telnetd服务
相关阅读 更多 +