[轉]busybox中telnet 功能添加


使用busybox制作的一個基本根文件系統如何添加telnetd服務呢?

下面把本人的添加過程列出來供大家分享,如有不同意見請不吝賜教!

1、 添加telnet的支持(busybox中配置)

Networking Utilities ---> 
                [*] telnet 
                [*] Pass TERM type to remote host
                [*] Pass USER type to remote host
                [*] telnetd
                [*] Support standalone telnetd (not inetd only)

2、 添加mdev的支持(busybox中配置)

        Linux System Utilities ---> 
                [*] mdev

3、 添加login(busybox中配置)

Login/Password Management Utilities ---> 
        [*] login

4、 修改etc/init.d/rcS添加mdev內容

#!/bin/sh

mount -a
        mkdir /dev/pts
        mount -t devpts devpts /dev/pts
        echo /sbin/mdev>/proc/sys/kernel/hotplug
        mdev -s
        /bin/hostname -F /etc/hostname

5、 創建etc/hostnam,並添加主機名

farsight

6、 在etc下創建文件passwd,group,shadow,創建目錄/home

7、 修改etc/fstab為

#device mount-point type options dump fsck order
        proc /proc proc defaults 0 0
        tmpfs /tmp tmpfs defaults 0 0
        sysfs /sys sysfs defaults 0 0
        tmpfs /dev tmpfs defaults 0 0

8、 內核中添加相應的支持

UNIX98_PTYS=y
        DEVPTS_FS=y

9、 使用adduser添加用戶

#adduser linux

10、 添加命令行提示符格式,修改/etc/profile添加如下內容

PS1='[\u@\h \W]\# '
        HOSTNAME=`/bin/hostname`
        export USER LOGNAME PS1

11、 啟動telnet服務,在/etc/profile下添加如下內容

telnetd

這個時候我們就可以同過telnet client登陸我們的板子了。上面這些步驟有些不是必須的,大家可以根據需求選擇。

12、 參考文獻

A daemon for the TELNET protocol, allowing you to log onto the host running the daemon. Please keep in mind that the TELNET protocol sends passwords in plain text. If you can't afford the space for an SSH daemon and you trust your network, you may say 'y' here. As a more secure alternative, you should seriously consider installing the very small Dropbear SSH daemon instead:

http://matt.ucc.asn.au/dropbear/dropbear.html 
        Note that for busybox telnetd to work you need several things:
        First of all, your kernel needs:
        UNIX98_PTYS=y
        DEVPTS_FS=y
        Next, you need a /dev/pts directory on your root filesystem:
        $ ls -ld /dev/pts
        drwxr-xr-x 2 root root 0 Sep 23 13:21 /dev/pts/
        Next you need the pseudo terminal master multiplexer /dev/ptmx:
        $ ls -la /dev/ptmx
        crw-rw-rw- 1 root tty 5, 2 Sep 23 13:55 /dev/ptmx
        Any /dev/ttyp[0-9]* files you may have can be removed.
        Next, you need to mount the devpts filesystem on /dev/pts using:
        mount -t devpts devpts /dev/pts
        You need to be sure that Busybox has LOGIN and FEATURE_SUID enabled. And finally, you should make certain that Busybox has been installed setuid root: 
        chown root.root /bin/busybox
        chmod 4755 /bin/busybox with all that done, telnetd _should_ work....

http://blog.donews.com/tmsonhust/archive/2009/03/14/1477052.aspx

 

8.2      終端登錄用戶驗證功能添加
需要在etc目錄下增加passwd、group和shadow(在編譯busybox時如果不選擇shadow功能將不需要這個文件)3個文件。
生成這3個文件的方法有:
Ø        手動生成,按照格式規范自己編寫內容;
Ø        通過busybox提供的工具adderuser自動生成
8.2.1        手動方式
首先我們介紹一下如何手動添加。以增加root用戶為例,增加passwd文件,其內容為:
#cat passwd
root:x:0:0:root:/root:/bin/sh
同時,此時要確定root目錄已經存在。
passwd一共由7個字段組成,6個冒號將其隔開。它們的含義分別為:
1     用戶名
2     是否有加密口令,x表示有,不填表示無,采用MD5、DES加密。
3     用戶ID
4     組ID
5     注釋字段
6     登錄目錄
7     所使用的shell程序
增加group文件,其內容為:
#cat group
root:x:0:
Group一共由4個字段組成,3個冒號將其隔開,它們的含義分別為:
1     組名
2     是否有加密口令,同passwd
3     組ID
4     指向各用戶名指針的數組
由於busybox默認啟動了shadow模式,因此需要增加shadow文件,其內容為:
#cat shadow
root:$1$3jZ93Mwq$oaeef6lWIuThavs8wD0Wh1:0:0:99999:7:::
shadow一共由9個字段組成,8個冒號將其隔開,它們的含義分別為:
1     用戶名
2     加密后的口令,若為空,表示該用戶不需要口令即可登陸,若為*號,表示該賬號被禁用。 上面的表示的是123456加密后的口令。
3     從1970年1月1日至口令最近一次被修改的天數
4     口令在多少天內不能被用戶修改
5     口令在多少天后必須被修改(0為沒有修改過)
6     口令過期多少天后用戶賬號被禁止
7     口令在到期多少天內給用戶發出警告
8     口令自1970年1月1日被禁止的天數
9     保留域
這里強調一下shadow文件的由來。/etc/passwd文件對系統的所有用戶都是可讀的,這樣的好處是每個用戶都知道系統上有哪些用戶,但缺點是其他用戶的口令容易受到攻擊,尤其是當口令較簡單時。所以一些linux系統中使用到了影子口令文件shadow,將用戶的口令存儲在另一個文件/etc/shadow中,該文件只有根用戶root可讀,大大提高了安全性。
不過,采用這種手動添加文件的方法有一個缺陷,就是如果要為用戶設置登陸口令的話,shadow文件中必須填寫加密后的口令,而這個加密算法我們又不知道,即使知道,要經過轉換后再添加,比較麻煩。此時,不妨試一下第二種方法。
8.2.2        自動方式
自動生成是使用了busybox提供的adduser工具和passwd工具。
在文件系統正常運行起來后,使用adduser命令,使用方法為:
#adduser root
然后就會在etc目錄下自動生成passwd 、group和shadow3個文件。但是運行該命令后會打印出如下消息:
passwd:unknown uid 0
這表示不能為該用戶設置密碼,此時你會發現要passwd命令也無法使用。
解決的辦法是,打開passwd文件,其內容為:
root:x:1000:1000:Linux User…:/home/root:/bin/sh
將用戶ID和組ID均更改為0
打開group文件,其內容為:
root:x:1000:
同樣將組ID改為0
然后,passwd命令就可以正常使用了。這時為root用戶設置口令:
#passwd root
根據提示輸入密碼。其中,root用戶登陸后的目錄可以手動進行更改。
8.3      telnetd功能添加
busybox默認已經添加了對telnetd和telnet功能的支持,只需要完成一些相關的設置工作就可以啟動這2個功能了。
Ø          創建/dev/pts目錄
Ø        在/etc/fstab中添加如下信息,掛載devpts文件系統
devpts /dev/pts devpts defaults 0 0
Ø        在/dev目錄下增加ptmx設備文件:
#mknod ptmx c 5 2
Ø        在rcS文件中添加如下腳本,啟動telnetd
if [ -x /usr/sbin/telnetd ] ;
then
        telnetd&
fi
Ø        在/dev目錄下增加null設備文件,否則上述腳本運行時會出錯:提示找不到null文件。
#mknod null c 1 3
此時,telnetd功能開機就可以啟動了。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM