实现让用户具备账号密码才可以登录
解法:1.启动至少一个终端(mingetty会调用login程序)
2.打印登录提示给用户
3.提供四个文件:/etc/passwd,/etc/shadow ,/etc/group,/etc/gshadow
4,login-->/etc/nsswitch.conf(名称服务开关nsswitch的配置文件)
-->库文件
login调用库文件把账号转换成id号
nsswitch的配置文件里定义了login根据哪种机制找用户的账号和id的对应
关系
可以查找账号和id的对应关系的机制:
mysql:table
dns
ldap
nis
当使用cp命令拷贝链接文件时应注意的问题:
eg:/lib/libm.so.1(链接文件)-->/lib/libm.so.2.4.1(原文件)
cp /lib/libm.so.1 /mnt/sysroot/lib
拷过去的其实是文件本身,名字却是链接文件的名字
比较好的拷贝方法是把链接文件和原文件都拷过去
cp -d /lib/libm.so.1 /mnt/sysroot/lib
好了,现在开始考库文件:
cp /usr/lib/libnss3.so /mnt/sysroot/usr/lib
cp /usr/lib/libnssckbi.so /mnt/sysroot/usr/lib
cp /usr/lib/libnssutil3.so /mnt/sysroot/usr/lib
cp -d /usr/lib/libnss_files.so /mnt/sysroot/usr/lib
cp -d /usr/lib/libness_compat.so /mnt/sysroot/usr/lib
ls !$
ls -l /lib |grep libnss
cp -d /lib/libnss_files* /mnt/sysroot/lib
cp -d /lib/libnss_compat* /mnt/sysroot/lib
ll /mnt/sysroot/usr/lib/
1.考好库文件就开始定义启动终端的内容:
在/etc/inittab里添加
1:2345:respawn:/sbin/mingetty tty1(终端1)
2:2345:respawn:/sbin/mingetty tty2(终端2)
编辑/etc/rc.d/rc.sysinit
将最后的/bin/bash删掉,因为不能让bash直接执行,需要让用户登录才可以执行
2.打印提示信息的设置
cd /mnt/sysroot/etc/
vim sysconfig/network
HOSTNAME=little.linux.org
:wq
vim rc.d/sysinit
加上 [ -f /etc/sysconfig/network ]&& source /etc/sysconfig/network
[ -z $HOSTNAME -o $HOSTNAME='(none)' ]&&HOSTNAME=localhost
echo "$HOSTNAME" > /proc/sys/kernel/hostname
vim issue
Welcome to little.linux.org.
Username:root,Passwd:redhat
:wq
sync
sync
sync
3. cp -p /etc/{passwd,shadow,group,gshadow} /mnt/sysinit/etc
4.cp /etc/nsswitch.conf /mnt/sysinit/etc
which login (系统自带的login太麻烦,不能用,我们需要从网上下个login)
cd /mnt/sysinit/bin
lftp 192.168.0.254
cd pub
ls
get login
bye
chmod +x login
ldd login
将没考的库文件考全
cp -d /lib/libcrypt.so.1 /mnt/sysinit/lib
cp -d /lib/libcrypt-2.5.so /mnt/sysinit/lib
cp /lib/libm.so.6 /mnt/sysinit/lib
sync
sync
sync
ln -s bash sh
(bash在启动系统时没问题但是在切换到级别1时,级别1只找sh不找bash,所以应该给bash创建个链接)
阅读(1448) | 评论(0) | 转发(0) |