bios告诉vmlinuz有什么硬件,vmlinuz附带了一些基本的硬件驱动,vga和鼠标,键盘等的驱动,

而其他的驱动,类似于文件系统,硬盘的驱动,则放置在initrd中,减少kernel的空间占用

如果不是第一次启动,则需要一个新旧硬件的比对,kuduz 发现新硬件,然后根据/etc/sysconfig/hwconf

如果挂接老的硬件,需要添加的参数以及如何挂接需要参考/etc/modprobe.conf

如果是新硬件,需要修改这两个文件

modules里面有硬件信息

对比modules.alias根据厂商的硬件信息,识别出新硬件的信息

模块的具体的位置存储在modules.dep,也存储了模块的依赖关系

硬件的发现过程

实验:

1,给本机添加reiserfs的模块,让系统支持rfs的文件系统

kernel.org放置的kernel不能用在企业级的

必须用redhat测试过kernel   (下载源代码,并打上补丁,生成打过补丁的源代码)

lftp ftp.redhat.com

>ls

>cd redhat

[root@localhost linux-2.6.18.i686]# uname -r确定自己的系统版本号

2.6.18-128.el5

[root@localhost tmp]# rpm -ivh kernel-2.6.18-128.4.1.el5.src.rpm 安装相应的的内核

warning: user mockbuild does not exist - using root

warning: group mockbuild does not exist - using root

warning: user mockbuild does not exist - using root

warning: group mockbuild does not exist - using root

warning: user mockbuild does not exist - using root

warning: group mockbuild does not exist - using root

warning: user mockbuild does not exist - using root

warning: group mockbuild does not exist - using root

. 这里报错是因为rpm包是官网下载打包好的,打包所使用的root用户是redhat打包时候的用户

.

.

.

warning: user mockbuild does not exist - using root

warning: group mockbuild does not exist - using root

[root@localhost tmp]# cd /usr/src/redhat/   进入目录

[root@localhost redhat]# ls

BUILD   RPMS   SOURCES   SPECS   SRPMS

目录分别代表什么意义

BUILD(用来执行创建rpm的工作目录)编译的中间文件,解开的原代码放那里去

SOURCES源代码文件以及patch文件,rpm默认寻找目录

SPECS此目录存放源代码编译的时候的配置文件

SRPMS半成品,放置原代码包,编译出来的src的rpm包(*src.rpm),(包含了sources+specs,为了遵循GPL的协议,公布出去)

RPMS编译后产生的所有的rpm的文件

[root@localhost redhat]# cd SPECS/

[root@localhost SPECS]# ls

kernel-2.6.spec

[root@localhost SPECS]# rpmbuild -bp --target i686 kernel-2.6.spec

(其中p把pre的部分做完#spec文件中包含了pre,post等部分

Building target platforms: i686

Building for target i686

Executing(%prep): /bin/sh -e /var/tmp/rpm-tmp.2082

+ umask 022

+ cd /usr/src/redhat/BUILD

+ LANG=C

+ export LANG

+ unset DISPLAY

+ '[' '!' -d kernel-2.6.18/vanilla ']'

+ rm -f pax_global_header

+ cd /usr/src/redhat/BUILD

+ rm -rf kernel-2.6.18

.

.

.

.

+ patch -p1 -s

+ exit 0

[root@localhost SPECS]# cd ../BUILD/

[root@localhost BUILD]# ls

kernel-2.6.18

[root@localhost BUILD]# cd kernel-2.6.18/  到build目录下的kernel

[root@localhost kernel-2.6.18]# ls

config  Config.mk  linux-2.6.18.i686  vanilla  xen

[root@localhost kernel-2.6.18]# cd linux-2.6.18.i686/

[root@localhost linux-2.6.18.i686]# ls

arch     CREDITS        fs       Kbuild       Makefile  REPORTING-BUGS  sound

block    crypto         include  kernel       mm        samples         usr

configs  Documentation  init     lib          net       scripts

COPYING  drivers        ipc      MAINTAINERS  README    security

[root@localhost linux-2.6.18.i686]# uname -r

2.6.18-128.el5

[root@localhost linux-2.6.18.i686]# vim Makefile

将    把 makefile的标识EXTRAVERSION改成当前的内核 e.g:EXTRAVERSION= -128.el5

EXTRAVERSION = -prep

修改为

EXTRAVERSION = -128.el5

保存退出

[root@localhost linux-2.6.18.i686]#make menuconfig 告诉kernel编译这个模块

File system ---->Reiserfs  support-->选择:stats...../ReiserFs..../ReiserFs....ReiserFs....

保存退出

[root@localhost linux-2.6.18.i686]# make prepare    内核预执行

scripts/kconfig/conf -s arch/i386/Kconfig

CHK     include/linux/version.h

UPD     include/linux/version.h

CHK     include/linux/utsrelease.h

UPD     include/linux/utsrelease.h

SYMLINK include/asm -> include/asm-i386

CC      arch/i386/kernel/asm-offsets.s

GEN     include/asm-i386/asm-offsets.h

[root@localhost linux-2.6.18.i686]# make modules_prepare  内核模块的预执行

CHK     include/linux/version.h

CHK     include/linux/utsrelease.h

HOSTCC  scripts/genksyms/genksyms.o

[root@localhost linux-2.6.18.i686]# make M=fs/reiserfs/   依赖模块要逐层make

模块的具体路径

WARNING: Symbol version dump /usr/src/redhat/BUILD/kernel-2.6.18/linux-2.6.18.i686/Module.symvers

is missing; modules will have no dependencies and modversions.

LD      fs/reiserfs/built-in.o

CC [M]  fs/reiserfs/bitmap.o

CC [M]  fs/reiserfs/do_balan.o

CC [M]  fs/reiserfs/namei.o

CC [M]  fs/reiserfs/inode.o   结束后有reiserfs.ko即所需的模块

[root@localhost linux-2.6.18.i686]# insmod fs/reiserfs/reiserfs.ko

#手动添加reiserfs.ko模块,位置可以在任意地方

[root@localhost linux-2.6.18.i686]# lsmod |grep reiserfs  查看系统加载模块有没有挂接好

reiserfs              211588  0

[root@localhost linux-2.6.18.i686]# ls

arch   configs  CREDITS  Documentation  fs       init  Kbuild  lib          Makefile  net     REPORTING-BUGS  scripts   sound

block  COPYING  crypto   drivers        include  ipc   kernel  MAINTAINERS  mm        README  samples         security  usr

[root@localhost kernel-2.6.18]# rmmod reiserfs    #删除rfs模块

[root@localhost kernel-2.6.18]# lsmod |grep reiserfs

[root@localhost linux-2.6.18.i686]#

mkdir /lib/modules/2.6.18-128.el5/kernel/fs/reiserfs 创建文件夹

[root@localhost linux-2.6.18.i686]# install -m 755 -d /lib/modules/2.6.18-128.el5/kernel/fs/reiserfs/

[root@localhost linux-2.6.18.i686]# depmod -a 生成modules.dep文件

[root@localhost linux-2.6.18.i686]#

grep reiserfs /lib/modules/2.6.18-128.el5/modules.dep

[root@localhost linux-2.6.18.i686]# lsmod |grep reiserfs  查看系统加载模块有没有挂接好

reiserfs              211588  0

[root@localhost reiserfs]#

install -m 755 -t /lib/modules/2.6.18-128.el5/kernel/fs/reiserfs/ /usr/src/redhat/BUILD/kernel-2.6.18/linux-2.6.18.i686/fs/reiserfs/reiserfs.ko

Install   -m  755  -t (单个文件)   源目标    目的目标

-d (整个目录)

手动拷贝需要先设定权限,copy后再给文件设置权限

安装rfs模块到指定的位置

#make install 就是调用install命令,就是将产生的文件copy到相应的位置

[root@localhost reiserfs]# depmod -a

[root@localhost reiserfs]# modprobe reiserfs

[root@localhost reiserfs]# modinfo reiserfs  查看模块的信息

filename:       /lib/modules/2.6.18-128.el5/kernel/fs/reiserfs/reiserfs.ko

license:        GPL

author:         Hans Reiser <reiser@namesys.com>

description:    ReiserFS journaled filesystem

srcversion:     75AFFF93098091BCAD10C8A

depends:

vermagic:       2.6.18-128.el5 SMP mod_unload 686 REGPARM 4KSTACKS gcc-4.1

[root@localhost reiserfs]# module_sig红帽子的官方签名

[root@localhost bootinitrd]# zcat initrd-2.6.18-128.el5.img | cpio -i

11745 blocks

[root@localhost bootinitrd]# ls -R

\.:

bin  dev  etc  init  initrd-2.6.18-128.el5.img  lib  proc  sbin  sys  sysroot

./bin:

dmraid  insmod  kpartx  modprobe  nash

./dev:

console  null  ram   ram1  systty  tty0  tty10  tty12  tty3  tty5  tty7  tty9   ttyS1  ttyS3

mapper   ptmx  ram0  rtc   tty     tty1  tty11  tty2   tty4  tty6  tty8  ttyS0  ttyS2  zero

./dev/mapper:

./etc:

./lib:

ata_piix.ko      dm-message.ko  dm-region_hash.ko  firmware   mptbase.ko   ohci-hcd.ko  scsi_transport_spi.ko  vmxnet3.ko

dm-log.ko        dm-mod.ko      ehci-hcd.ko        jbd.ko     mptscsih.ko  pvscsi.ko    sd_mod.ko              vmxnet.ko

dm-mem-cache.ko  dm-raid45.ko   ext3.ko            libata.ko  mptspi.ko    scsi_mod.ko  uhci-hcd.ko

./lib/firmware:

./proc:

./sys:

./sysroot:

权限和认证

login 我是谁

su 我想成为谁

sudo 我想作某件事情,可以作某件事情,需要作一件事情,授权

授权在suid sgid

使用这个文件的时候拥有文件拥有者的权限

sgid,某个组的权限

认证可以有多种方式,passwd+shadow 标准unix的认证方式,login调用一个 pam的模块,pam.so,包括pamunix.so pam.md5.so

login把用户给的用户名字和密码给pam判断是否成功,然后给login返回信息成功还是不成功

认证本身和程序相关,如果程序需要的话,就需要

NIS 是远端的yppasswd ypshadow

如果login包含认证,则需要重新写程序,但是现在只需要写程序,需要修改的用模块的定义

认证不止是su在用,login,

可插入性的认证方式的好处,统一认证,与程序无关,用户透明  (pam机制)

授权,要给用户授权要有一个基准

配置,可以是文件本身上的认证 (suid sgid acl权限,

附加授权权限 setfacl,为了和windows连用,

为了使文件被kevin写,tube读,told写,mark读,如果还有一个其他的用户,则不方便设置

实验2

#mount -o remount,acl /myfiles/

给某一个分区作

#cd /myfiles/testdir

#mkdir dir

#setfacl -m u:kevin:rwx dir

m是modules u用户还是组,kevin用户还是组名

#getfacl dir

kevin有了rwx的权限

使用acl使的系统性能下降17%

需要去查看用户的权限,然后去比对

htpasswd也是一种授权方式,mysql的用户的认证,哪些用户能对哪些表做什么事情

安全也就是授权和认证

认证和授权都是针对程序的,程序本身不需要授权,则可以跳过去

从用户登录开始,

login登录的提示符,登录的认证程序,inittab 产生的 tty终端调用的login,如果调用的是需要认证的则去找pam机制

终端登录调用的是允许在哪些终端登录,在/etc/securetty

判断是否有nologin的文件,如果存在,普通用户是不可以登录的

passwd认证是否存在该用户,是否可以登录shell

用户的

(0,多长时间可以改密码

最后是0或者1,则不能登录)

shadow看用户是否过期了

minetty --autologin root tty1

跳过认证自动登录

man minetty查看参数

/etc/pam.d/login

去查看/etc/nologin是否存在,如果存在,则不允许登录

进去了,但是被T出来了

tty错误/etc/securetty,删除了tty3,则tty3不允许的登录

从安全的角度考虑,一般只开两个tty的登录许可

tty调用的pam.d/login

登录管理器 gdm 用的不是login

2,用户登录

3,motd文本的信息

4,pam决定了家目录的位置,如果是本地的则去找 /etc/passwd,进入到/

5,启动shell,csh,tcsh,zsh,nash

判断用户使用哪种shell

执行/etc/profile下面的*.sh

系统有很多的shell,需要各自的环境,以单独的一个文件放置到 profile

conf 其中conf.d设置的是为了修改局部的配置,而不影响整体的配置

图形登录的时候执行xterm的,bash子 shell,之后执行bashrc

tty的时候先读取.bash_profile后,执行bashrc

用户自己决定是否执行 /etc/bashrc

退出的时候不保留记录 kill -9 0

/etc/skel包含了profile,bashrc等配置文件,添加用户的时候拷贝过去

可以放置木马

initrd.img只需要放置本地启动需要的

安装需要防止所有可能的模块,可能需要各种板卡的驱动

1,用于启动的initrd.img

cp /boot/initrd*.img

mkdir /tmp/bootinitrd

zcat ../initrd*.img | cpio -i

#-i input

#cpio用在纸带机上

#tar最早用在磁带机

dmraid lvm如果根是 raid 或者lvm则能识别出来

kpartx硬件虚拟化 mutipath

双hba卡+一个storage

两个卡认到2个设备

虚拟成一个设备

cd bootinitrd

#解压开来

zcat ../initrd-2.6.18-128.el5.img | cpio -i

去掉lib中的ext3.ko,然后重新生成

#重新生成

find ./ | cpio -H newc -o > ../initrd.my

#以最高压缩比压缩

gzip -9 initrd.my

2,用于安装的 initrd.img

mkdir installinitrd

cd !$

解压开来之后

modules/pci.ids

作业:

查找pci.ids在系统中的哪个位置

dmesg

pci.ids由org提供

mkdir modules

mkdir 2.6.18-164.el5/i686/

zcat ../* | cpio -i

el4 initrd的制作方法

ext2的initrd

dd if=/dev/zero of=/tmp/initrddir bs=1M count=8

mkfs.ext2 initrddir

mount

cp -a bootinitrd initrddir

gzip -9 initrddir

initrd.img然后去lib/modules-modules_alias 先去比对,然后去.dep去找位置

本文转自 xxl714 51CTO博客,原文链接:http://blog.51cto.com/dreamgirl1314/1606141,如需转载请自行联系原作者

硬件检测--认证和授权相关推荐

  1. 硬件***检测系统完全导购

    ***检测产品的发展趋势 1.***检测产品发展现状 ***检测系统(Intrusion Detect System),目前基本上分为以下两种:主机***检测系统(HIDS):网络***检测系统( ...

  2. 【Kafka】Kafka认证与授权

    防丢失:大家去看原文 参考:https://www.cnblogs.com/rexcheny/articles/12884990.html 参考:https://www.orchome.com/553 ...

  3. 会说话的狗狗本电脑版_「电脑知识」硬件狗狗专业电脑硬件检测跑分工具免安装单文件版|电脑硬件|电脑|显卡|狗狗|操作系统...

    最新很多小伙伴要求找一款适合大家的硬件检测跑分工具,今天给大家分享一款,简单的希望大家能够喜欢. 硬件狗狗专业的电脑硬件检测工具免安装单文件版,硬件狗狗是一款媲美鲁大师电脑硬件检测工具,由快科技(驱动 ...

  4. Shiro 权限管理入门之认证与授权

    Shiro 权限管理 什么是权限管理? 什么是身份认证? 什么是授权? Shiro 是什么? Shiro 的核心架构 Shiro 中的认证 认证关键对象 认证流程 认证的开发 自定义 Realm Si ...

  5. 2021年健康医疗、专业服务和检测认证等行业将有较大用人增长;香港上市公司女性董事比例落后 | 美通企业日报...

    今日看点:前程无忧发布<2020职场回顾&2021前景推测报告>.香港特许秘书公会呼吁提高香港上市公司女性董事比例.默克中国创新中心与互创联合签署创新项目合作协议.清能股份子公司H ...

  6. 分布式系统下的认证与授权

    在软件系统设计中,如何让应用能够在各种环境中安全高效的访问是个复杂的问题,这个问题的背后是一系列软件设计时需要考虑的架构安全问题:架构安全性 | 凤凰架构 认证:系统如何识别合法用户,也就是解决 你是 ...

  7. 常用优化与测试系统软件,推荐几款常用的cpu硬件检测软件以及cpu优化软件

    经常看到有朋友在问怎么查看cpu.html" target="_blank">cpu温度,如何检测cpu或者cpu温度过高怎么办?今天笔者为大家推荐几款常用的cpu ...

  8. Shiro认证和授权

    shiro介绍 什么是shiro Shiro是apache旗下一个开源框架,它将软件系统的安全认证相关的功能抽取出来,实现用户身份认证,权限授权.加密.会话管理等功能,组成了一个通用的安全认证框架. ...

  9. shiro的 认证 与 授权

    1,什么是shiro Shiro是apache旗下一个开源框架,它将软件系统的安全认证相关的功能抽取出来,实现用户身份认证,权限授权.加密.会话管理等功能,组成了一个通用的安全认证框架. shiro将 ...

最新文章

  1. Database · 理论基础 · 关于一致性协议和分布式锁
  2. 解决在Mac上用pyenv安装python3失败的问题
  3. node遍历给定目录下特定文件,内容合并到一个文件
  4. 微软面向初学者的机器学习课程:1.4-机器学习技术
  5. 首先记录异常的根本原因
  6. 数据结构数组计算机中的应用,2018考研计算机:数据结构数组和广义表复习重点...
  7. JEECG移动方案 - 应用系统转换移动应用的中间件实现方案
  8. python模块_python模块
  9. oracle11数据库导入,Oracle11g数据库之数据导入导出与事物
  10. 各种常用的JSON接口
  11. Scintilla教程(6): 字符集
  12. 第九章 SG90伺服舵机模块的使用
  13. 春秋·左丘明-《左传·成公八年》
  14. ecshop与java的关系_ecshop模板的原理分析
  15. 解决电脑右侧数字键盘无法打出数字问题
  16. ONLYOFFICE历史版本开发技术之二
  17. Nvidia Jetson deepstream配置多路RTSP视频源
  18. 济南服务器空间_济南虚拟主机
  19. 简析国内外电商的区别
  20. Hadoop 入门学习思维导图

热门文章

  1. Xcode下使用git
  2. Qt开发基础(10)——定时器
  3. 汽车电子测试小知识(1)——什么是MiL测试?
  4. 51单片机的蓝牙烟雾报警系统设计
  5. 用Processing实现北京地铁的一天动态可视化
  6. Laravel Homestead 开发环境
  7. 在云服务器中运行Rstudio中遇到的一些小问题
  8. 内容营销策略如何正确制造紧迫感避免产生“逆反心理”
  9. python随机数random_Python 随机数 random
  10. 【小技巧】在matlab中如何保存大于2G的数据。