linux命令:系统裁剪之三login: 用户登录验证

Linux系统裁剪笔记

1.什么裁剪?

本篇文章的主要目的是让笔者和读者更深的认识Linux系统的运作方式,大致内容就是把Linux拆开自己一个个组件来组装,然后完成一个微型的Linux系统.下面,让我们来实现吧..写的不好的地方请指教.

2.原理

大家都知道,操作系统的启动流程是(主要是Linux):POST—>BIOS—>MBR—kernel-->initrd-->sbin/init,

POST,BIOS都不是我们管的,所以这里我们从MBR开始,Linux的系统引导先主要是用的grub这个软件,grub引导系统了,然后启动内核,内核调用initrd来实现最基本的操作系统,

3.实验 (所有操作均在虚拟机上实现,且定义硬盘时选IDE)

环境:1).在宿主机上安装一台红帽子Linux5.4,/dev/sda上安装操作系统;

2).在宿主机上新建一个新硬盘:/dev/hda,且分区为20M的sdb1,512M的sdb2;

3).另建立一台测试虚拟机,将原有的硬盘删除,再将硬盘/dev/hda的新增到该测试虚拟机;

4).系统服务启动时显示开启状态;

5).新增启动网络模块;

6).新增内核控制模块;

    7).用户登录

login: 用户登录验证

nsswitch: Network Service Switch

框架:  /etc/passwd, /etc/shadow, /etc/group

库:   libnss_file.so,libnss_nis.so, libnsss_ldap.so

配置文件:  /etc/nsswitch.conf

[[email protected] sysroot]# cat /etc/nsswitch.conf   #查看配置文件 
passwd:     files
shadow:     files
group:      files
hosts:      files dns

...

[[email protected] sysroot.5]# cp -d /lib/libnss_files* /mnt/sysroot/lib/  #复制库文件

[[email protected] sysroot]# ll lib/libnss_files*  #验证 
-rwxr-xr-x 1 root root 46680 Nov 27 13:55 lib/libnss_files-2.5.so
lrwxrwxrwx 1 root root    19 Nov 27 13:55 lib/libnss_files.so.2 -> libnss_files-2.5.so

[[email protected] sysroot.5]# cp -d /usr/lib/libnss3.so /usr/lib/libnssckbi.so /usr/lib/libnssutil3.so /mnt/sysroot/usr/lib

[[email protected] lib]# ln -sv ../../lib/libnss_files.so.2 libnss_files.so

[[email protected] sysroot]# ll /mnt/sysroot/usr/lib/  #验证

-rwxr-xr-x 1 root root 1188804 Nov 27 14:41 libnss3.so
-rwxr-xr-x 1 root root  373992 Nov 27 14:41 libnssckbi.so
lrwxrwxrwx 1 root root      27 Nov 27 14:42 libnss_files.so -> ../../lib/libnss_files.so.2
-rwxr-xr-x 1 root root   98532 Nov 27 14:41 libnssutil3.so
...

[[email protected] sysroot]# vim /mnt/sysroot/etc/nsswitch.conf  #新建库文件 
passwd:     files
shadow:     files
group:      files
hosts:      files dns

[[email protected] sysroot]# grep -E "root|hadoop" /etc/passwd    #新建用户相关文件 
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
hadoop:x:500:500::/home/hadoop:/bin/bash
[[email protected] sysroot]# grep -E "root|hadoop" /etc/passwd >/mnt/sysroot/etc/passwd

[[email protected] sysroot]# grep -E "root|hadoop" /etc/shadow
root:$1$u2o9sj7Z$xz8STP0grPk5Pg3vQ0l0d.:17130:0:99999:7:::
hadoop:$1$nwkmJG/4$aeC.I.TpUnrFG5Q8zb/4i.:17132:0:99999:7:::
[[email protected] sysroot]# grep -E "root|hadoop" /etc/shadow > /mnt/sysroot/etc/shadow

[[email protected] sysroot]# grep -E "^(root|hadoop)" /etc/group
root:x:0:root
hadoop:x:500:
[[email protected] sysroot]# grep -E "^(root|hadoop)" /etc/group >/mnt/sysroot/etc/group

[[email protected] sysroot]# vim etc/inittab  #修改登录命令mingetty

id:3:initdefault:
si::sysinit:/etc/rc.d/rc.sysinit
l0:0:wait:/etc/rc.d/rc 0

l1:1:wait:/etc/rc.d/rc 1

l3:3:wait:/etc/rc.d/rc 3
l6:6:wait:/etc/rc.d/rc 6
1:2345:respawn:/sbin/mingetty tty1
2:2345:respawn:/sbin/mingetty tty2
3:2345:respawn:/sbin/mingetty tty3

[[email protected] bin]# cp login  /mnt/sysroot/bin/
[[email protected] bin]# ldd login  #关联的库文件 
    linux-gate.so.1 =>  (0x00eac000)
    libcrypt.so.1 => /lib/libcrypt.so.1 (0x024cd000)
    libm.so.6 => /lib/libm.so.6 (0x00d63000)
    libc.so.6 => /lib/libc.so.6 (0x00c1b000)
    /lib/ld-linux.so.2 (0x00bfd000)

[[email protected] rc.d]# mkdir rc1.d
[[email protected] rc.d]# cd rc1.d/
[[email protected] rc1.d]# ln -sv ../init.d/network K
K33tserver  K90network  
[[email protected] rc1.d]# ln -sv ../init.d/network K90network 
[[email protected] rc1.d]# ln -sv ../init.d/tserver K33tserver 
[[email protected] etc]# vim rc.d/init.d/single 
#!/bin/bash
#
#chkconfig:
# description:
#
case $1 in
start)
  ;;
*)
  echo "Usage: single start."
  ;;
esac

exec /sbin/init S

[[email protected] etc]# chmod +x rc.d/init.d/single

[[email protected] etc]# cd rc.d/rc1.d

[[email protected] rc1.d]# ln -sv ../init.d/single S99single

[[email protected] etc]# ll rc.d/rc1.d/
total 0
lrwxrwxrwx 1 root root 17 Nov 27 20:06 K33tserver -> ../init.d/tserver
lrwxrwxrwx 1 root root 17 Nov 27 20:05 K90network -> ../init.d/network
lrwxrwxrwx 1 root root 16 Nov 27 20:13 S99single -> ../init.d/single

时间: 2024-10-20 19:13:25

linux命令:系统裁剪之三login: 用户登录验证的相关文章

Linux命令——系统应用命令

Linux命令--系统应用命令1.时间管理date:显示系统时间?????clock:显示硬件时间?????hwclock?-W:把系统时间同步到硬件时间?????hwclock?-s:把硬件时间同步到系统时间?cal:显示日历 修改日期: 时间设定成1996年1月9日的命令如下: #date -s 1/9/2009 设置日期时间:2008年8月8号12:00 date -s "2008-08-08 12:00:00" 设置时间为下午14点36分. date -s 14:36:00 更

android loginDemo +WebService用户登录验证

本文是基于android4.0下的loginActivity Demo和android下的Webservice实现的.loginActivity是android4.0下的自带演示例程,他自带登录界面.用户名格式设定.输入密码和用户名格式是否正确.用户登录时间进度条等功能,用户可以在这个例程的基础上延伸出自己login用户登录程序.在这里我没有对这个程序做过多的延伸,只是增加Webservice验证用户登录的功能,使其成为一个完整的网络用户登录验证的模块程序.在这我会对这个Demo做全面的解析,使

ASP.NET MVC3 实现用户登录验证

原文:ASP.NET MVC3 实现用户登录验证 自定义一个授权筛选器类,继承于AuthorizeAttribute: using System; using System.Web; using System.Web.Mvc; namespace MvcApplication1 { public class DWAuthorizeAttribute : AuthorizeAttribute { /// <summary> /// 判断用户是否登录 /// </summary> //

简明Python教程(四)———用户登录验证

例子: 实现目标,用Python编写用户登录验证脚本. 知识点: 1.while和if控制流 2.运算表达式 验证过程: 脚本: #!/usr/bin/env python#filename : User login authentication#import sysname = 'Tiger'passwd = '123456'counter = 0times = 3while True:                         #-----------无限循环 username = r

struts2 学习(三) ----- 用户登录验证

下面是struts2 的第三个程序(用户登录验证)步骤:(需要新建login.jsp,Login.java和message.jsp) 1.增加Struts框架,步骤在第一篇中. 2.新建一个login.jsp.布局如下: 3.然后新建一个class,名为Login.java,代码如下: 4.在struts.xml文件中,代码如下: 5.新建message.jsp页面,代码如下: 6.OK,运行. **************************************************

yii 用户登录验证(cwebuser) yii 用户登录 (记)

yii 的确是一个强大而臃肿的框架,简单的小项目,或者只做后台接口调用的项目,建议不要用. 今天记录一下yii使用中cwebuser(Yii::app()->user->login())登录: 1.准备工作 官方标准做法,在components里加一个UserIdentity.php文件,class UserIdentity extends CUserIdentity 继承CUserIdentity,然后在UserIdentity类里面写验证的业务过程(比如你在哪张表去查数据,取数据之类) 2

linux下怎么查看ssh的用户登录日志

linux下登录日志在下面的目录里: cd /var/log 查看ssh用户的登录日志: less secure linux日志管理: 1. 日志简介 日志对于安全来说,非常重要,他记录了系统每天发生的各种各样的事情,你可以通过他来检查错误发生的原因,或者受到攻击时攻击者留下的痕迹.日志主要的功能有:审计和监测.他还可以实时的监测系统状态,监测和追踪侵入者等等. 在Linux系统中,有三个主要的日志子系统: 连接时间日志--由多个程序执行,把纪录写入到/var/log/wtmp和/var/run

linux命令---系统监控

和系统运行状况相关的Shell命令:    1.  Linux的实时监测命令(watch):    watch 是一个非常实用的命令,可以帮你实时监测一个命令的运行结果,省得一遍又一遍的手动运行.该命令最为常用的两个选项是-d和-n,其中-n表示间隔多少秒 执行一次"command",-d表示高亮发生变化的位置.下面列举几个在watch中常用的实时监视命令:    /> watch -d -n 1 'who'   #每隔一秒执行一次who命令,以监视服务器当前用户登录的状况  

老男孩教育每日一题:2017年3月13日-如何防止Linux命令行或脚本里MySQL登录密码泄露?

不低于3种方法. 明知山有虎偏向虎山行的方案: 1.1.1 可以通过如下环境变量强制Linux不记录敏感历史命令 在命令行执行HISTCONTROL=ignorespace后,再输入带密码的命令的前面加一个空格登录,登录命令不会被记录到历史记录里. [[email protected]~]# HISTCONTROL=ignorespace #<==这里是临时生效,要想永久生效,请放入/etc/bashrc. [[email protected]~]#  mysql -uroot-p'oldboy