前言
上一篇博客中,我们的小linux又增加了网络功能,下面我们继续增加终端登录信息显示、用户登录界面、用户登录、用户认证 …… ^_^ !
1. 用户认证
使用不依赖与PAM的login程序 (已经编译好的),系统上的login的编译是依赖于PAM的,这里的login程序,去掉了对PAM的依赖,可以单独利用!(login 文件见附件!!!)
1)、复制 nsswitch 相关文件
nsswitch:Network Service Switch网络服务转换是一个协议框架,定义了login读取相关配置文件的位置:/etc/psaawd /etc/shadow /etc/group,nsswitch的配置文件在/etc/nsswitch.conf,而nsswitch的运行则依赖一些库文件:/lib/libnss*、/usr/lib/libnss*!
注意:复制库的时候必须保留库的连接:cp –d
[root@localhost ~]# cp -d /lib/libnss_files* /mnt/sysroot/lib [root@localhost ~]# cp -d /usr/lib/libnss_files.so/mnt/sysroot/usr/lib/ [root@localhost ~]# mkdir /mnt/sysroot/usr/lib [root@localhost ~]# cp -p /usr/lib/libnss3.so /usr/lib/libnssckbi.so /usr/lib/libnssutil3.so /mnt/sysroot/usr/lib/ [root@localhost ~]# cp -d /lib64/libnss_files* /mnt/sysroot/lib64 [root@localhost ~]# cp -d /usr/lib64/libnss_files.so/mnt/sysroot/usr/lib64/ [root@localhost ~]# mkdir /mnt/sysroot/usr/lib64 [root@localhost ~]# cp -p /usr/lib64/libnss3.so /usr/lib64/libnssckbi.so /usr/lib64/libnssutil3.so /mnt/sysroot/usr/lib64/
2)、复制并修改 nsswitch 配置文件
[root@localhost ~]# cp -p /etc/nsswitch.conf /mnt/sysroot/etc/ [root@localhost ~]# [root@localhost ~]# vim /mnt/sysroot/etc/nsswitch.conf #只保留以下内容 passwd: files shadow: files group: files hosts: files dns
3)、创建用户、密码、组
[root@localhost etc]# grep -E "^root\>" /etc/passwd > /mnt/sysroot/etc/passwd [root@localhost etc]# grep -E "^root\>" /etc/shadow > /mnt/sysroot/etc/shadow [root@localhost etc]# grep -E "^root\>" /etc/group> /mnt/sysroot/etc/group [root@localhost ~]# grep -E "^root\>" /etc/gshadow >/mnt/sysroot/etc/gshadow
4)、移植相关命令
[root@localhost ~]# sh addcom.sh Your command: mingetty /sbin/mingetty copy /sbin/mingetty finished. Continue: useradd /usr/sbin/useradd copy lib64 /lib64/libaudit.so.0 finished. copy /usr/sbin/useradd finished. Continue: usermod /usr/sbin/usermod copy /usr/sbin/usermod finished. Continue: passwd /usr/bin/passwd copy lib64 /usr/lib64/libuser.so.1 finished. copy lib64 /lib64/libgobject-2.0.so.0 finished. copy lib64 /lib64/libgmodule-2.0.so.0 finished. copy lib64 /lib64/libglib-2.0.so.0 finished. copy lib64 /usr/lib64/libpopt.so.0 finished. copy lib64 /lib64/libpam_misc.so.0 finished. copy lib64 /lib64/libpam.so.0 finished. copy /usr/bin/passwd finished. Continue: groupadd /usr/sbin/groupadd copy /usr/sbin/groupadd finished.
5)、修改 inittab 文件
[root@localhost ~]# vim /mnt/sysroot/etc/inittab 1:2345:respawn:/sbin/agetty -n -l /bin/bash 38400 tty1 id:3:initdefault: si::sysinit:/etc/rc.d/rc.sysinit l0:0:wait:/etc/rc.d/rc 0 l3:3:wait:/etc/rc.d/rc 3 l6:6:wait:/etc/rc.d/rc 6 #删除下面两行 1:2345:respawn:/sbin/agetty -n -l /bin/bash 38400 tty1 2:2345:respawn:/sbin/agetty -n -l /bin/bash 38400 tty2 #增加下面两行 1:2345:respawn:/sbin/mingetty tty1 2:2345:respawn:/sbin/mingetty tty2
6)、下载一个编译好、不依赖PAM认证的login到bin下,并给其执行权限
[root@localhost ~]# cd /mnt/sysroot/ bin/ dev/ half/ lib/ lost+found/ remkdir/ sbin/ sys/ usr/ boot/ etc/ home/ lib64/ proc/ root/ source/ tmp/ var/ [root@localhost ~]# cd /mnt/sysroot/bin/ [root@localhost bin]# ls basename bash df hostname login ls mkdir mount ping rm sh sleep sync tar touch umount [root@localhost bin]# chmod +x login [root@localhost bin]# ls basename bash df hostname login ls mkdir mount ping rm sh sleep sync tar touch umount [root@localhost bin]#
7)、终端登陆信息:(用户登陆的时候才会显示) /etc/issue内的内容,是通过终端来进行打印的,里面各式使用转移字符
[root@localhost ~]# cp /etc/issue /mnt/sysroot/etc/ [root@localhost ~]# vim /mnt/sysroot/etc/issue freeloda little linux ! Kernel \r on an \m http://freeloda.blog.51cto.com/
8)、设定内核参数
[root@localhost etc]# vim /mnt/sysroot/etc/sysctl.conf #直接编辑文件添加一行代码即可 net.ipv4.ip_forward = 1 [root@localhost etc]# vim /mnt/sysroot/etc/rc.d/rc.sysinit #添加以下内容 sysctl -p &> /dev/null [root@localhost ~]# sh addcom.sh #移植相关命令 Your command: sysctl /sbin/sysctl copy lib64 /lib64/libproc-3.2.7.so finished. copy /sbin/sysctl finished. Continue: id /usr/bin/id copy /usr/bin/id finished. Continue: q
9)、移植 login 相关库文件
[root@localhost ~]# ldd /bin/login libcrypt.so.1 => /lib64/libcrypt.so.1 (0x00002b461e61c000) libpam.so.0 => /lib64/libpam.so.0 (0x00002b461e854000) libpam_misc.so.0 => /lib64/libpam_misc.so.0 (0x00002b461ea5f000) libaudit.so.0 => /lib64/libaudit.so.0 (0x00002b461ec63000) libc.so.6 => /lib64/libc.so.6 (0x00002b461ee7b000) libdl.so.2 => /lib64/libdl.so.2 (0x00002b461f1d2000) /lib64/ld-linux-x86-64.so.2 (0x00002b461e3ff000) [root@localhost ~]# [root@localhost ~]# cp /lib64/libcrypt.so.1 /mnt/sysroot/lib64/ [root@localhost ~]# cp /lib64/libpam.so.0 /mnt/sysroot/lib64/ [root@localhost ~]# cp /lib64/libpam_misc.so.0 /mnt/sysroot/lib64/ [root@localhost ~]# cp /lib64/libaudit.so.0 /mnt/sysroot/lib64/ [root@localhost ~]# cp /lib64/libc.so.6 /mnt/sysroot/lib64/ [root@localhost ~]# cp /lib64/libdl.so.2 /mnt/sysroot/lib64/ [root@localhost ~]# cp /lib64/ld-linux-x86-64.so.2 /mnt/sysroot/lib64/
)、测试效果
转载于:https://blog.51cto.com/freeloda/1222552