Linux 安全模块】的更多相关文章

前些日子接了个外包的活,了解了一下Linux安全模块,发现了安全模块中的一些问题. 关于linux安全模块LSM在此就不多说了,大家google下就明白了. 这里主要介绍的是如何修改这个模块,使它可链栈化. 关于LSM,旧版本的提供了register_security/mod_reg_security接口用于注册用户的安全模块,register_security注册接口只支持一个的安全模块存在,mod_reg_security 支持注册多个安全模块,不过模块之间的调用需要用户自己维护(也就是不提…
http://www.ibm.com/developerworks/cn/linux/l-lsm/part1/ 1.相关背景介绍:为什么和是什么 近年来Linux系统由于其出色的性能和稳定性,开放源代码特性带来的灵活性和可扩展性,以及较低廉的成本,而受到计算机工业界的广泛关注和应用.但在安全性方面,Linux内核只提供了经典的UNIX自主访问控制(root用户,用户ID,模式位安全机制),以及部分的支持了POSIX.1e标准草案中的capabilities安全机制,这对于Linux系统的安全性是…
/*************************************************************************** * linux kernel 模块多文件编译 * 声明: * 本文主要是记录在调试驱动的阶段,我们可能会更倾向于使用模块插入的方式 * 来进行驱动调试,这样可以大大缩短调试时间.之前在调试gt9xx Touch的时候也 * 是采用这种方式,这里还是记录一下,日后方便查找. * * 2016-2-2 深圳 南山平山村 曾剑锋 **********…
LSM是Linux Secrity Module的简称,即linux安全模块.其是一种轻量级通用访问控制框架,适合于多种访问控制模型在它上面以内核可加载模块的形实现.用户可以根据自己的需求选择合适的安全模块加载到内核上实现. LSM设计思想: LSM的设计思想:在最少改变内核代码的情况下,提供一个能够成功实现强制访问控制模块需要的结构或者接口.LSM避免了利用如在systrace系统调用中的出现过的系统调用干预,因为它不能扩展到多处理器内核,并且它受制于参数替换攻击.还有LSM在设计时做了两点考…
有关Linux ipv6模块加载失败的问题 同事一个SUSE11sp3环境配置ipv6地址失败,提示不支持IPv6,请求帮助,第一反应是应该ipv6相关内核模块没有加载.     主要检查内容:   ipv6地址是否存在    ifconfig |grep inet6     没有默认inet6地址       ipv6模块是否存在    # modinfo -n ipv6    /lib/modules/3.0.101-0.47.90-default/kernel/net/ipv6/ipv6.…
静态编译,动态加载应用想访问内核需要通过系统调用 驱动:1.模块(打包,加入内核)2.内核机制3.操作硬件 在Kconfig里面配置menuconfig的时候,不同的类型会在图形化界面的终端显示不用的配置选项:bool CONFIG_HELLO []hello_driver 两态tristate CONFIG_HELLO <>hello_driver 三态的 空 * Mstring/int CONFIG_HELLO ()hello_driver 相当于宏替换 (dest)hello_drive…
/lib/modules/[kernel版本]/modules.dep 这个文件记录了模块的依赖关系 modprobe 和 insmod 这两个命令都可以加载模块,但是modeprobe会自动分析模块之间的依赖关系,类似于在线包管理系统一样.其实分析工作根据前面提到的 modules.dep 这个文件来完成的.这个文件是 depmod 命令建立的. linux并不会在开机时加载所有模块,有些模块是按需加载的.试验过,只有当我连接无线网卡的时候,linux才会加载网卡的驱动程序模块. 大致的命令有…
该文转载自:http://rangercyh.blog.51cto.com/1444712/521244 系统调用是操作系统内核和应用程序之间的接口,而设备驱动程序是操作系统内核和机器硬件之间的接口. 设备驱动程序为应用程序屏蔽了硬件的细节,这样在应用程序看来,硬件设备只是一个设备文件, 应用程序可以像操作普通文件一样对硬件设备进行操作. 设备驱动程序是内核的一部分,它完成以下的功能: (1) 对设备初始化和释放. (2) 把数据从内核传送到硬件和从硬件读取数据. (3) 读取应用程序传送给设备…
一.Linux Security Modules Linux Security Modules (LSM) 是一种 Linux 内核子系统,旨在将内核以模块形式集成到各种安全模块中.在 2001 年的 Linux Kernel 峰会上,NSA 代表建议在 Linux 内核版本 2.5 中包含强制控制访问系统 Security-Enhanced Linux.然而,Linus Torvalds 拒绝了这一提议,因为 SELinux 并不是惟一一个用于增强 Linux 安全性的安全系统.除此之外,并不…
本文摘录<嵌入式Linux驱动模板简洁和工程实践>一本书"开发和调试技术". Linux强大的是,有那么多的开源项目可以使用.通常非常需要可以通过寻找相关的源模块被定义为高速的解决方案.使这些开源模块的嵌入.对开源项目进行交叉编译. 依据详细情况.下载的开源项目在组织上有非常多情况,在此对各种情况进行归类介绍. 1. 下载的开源软件包找不到Makefile 对于这样的开源包一般是採用configure的方式组织的,那么第一步就是使用软件包中的configure生成Makef…
Linux内核模块化设计 1. Linux内核设计:单内核.模块化(动态装载和卸载) (1) Linux:单内核设计,但充分借鉴了微内核体系的设计的优点:为内核引入了模块化机制:(2) 内核的组成部分:kernel:内核核心,一般为bzImage格式,通常位于/boot目录,名称为vmlinuz-VERSION-release:当系统启动之后该文件就不在使用,因为已经加载到内存,放置/boot下方便管理kernel object:内核模块,一般放置于/lib/modules/VERSION-re…
装完centos后,默认开启了一些模块.可是有些模块并非我们必须的.比方眼下尚未在中国普及的IPV6 怎样关闭IPV6呢 以下介绍的方法,也能够在关闭其它模块的时候使用 第一步: 查找模块名称 使用命令:lsmod 查看系统启动的模块,找出我们须要的 IPV6相关的2个模块各自是net-pf-10 ipv6 第二步: 编辑/etc/modprobe.d/dist.conf 在最后增加 #edit by dwj   备注一下编辑信息 alias net-pf-10 off alias ipv6 o…
在编写一个自己写的gadget驱动的时候遇到一个这样的问题,编译的时候报了个警告:WARNING: "usb_composite_register" [-/my_zero.ko] undefined! 告诉我这个函数没有定义,但是生成了ko文件,将这个文件拷贝到开发板目录下insmod,同样也是报这是一个未知的符号: 通常这种问题是因为没有包含函数头文件,这个函数是在linux/usb/composite.c中定义的,在composite.h中声明,因此包含linux/usb/comp…
最近,想使用apache的mod_status来查看一下apache的服务器状态,就自己安装了一下mod_status,以前觉得好像很难的东西其实很简单. 第一步, 去http://httpd.apache.org/下载最新的apache服务器 第二步,将下载的httpd-2.2.17.tar.gz解压,如:~/tmp$ tar xvf httpd-2.2.17.tar.gz 第三步,进入解压后的httpd-2.2.17目录,通过configure脚本配置安装文件,这里可以指名你的apache安…
linux中,管理网卡收发报文的结构是sk_buff,这个结构比freebsd中的m_buf复杂的多,这个也是为什么现在用户态协议栈大多采用bsd为基础来实现的一个原因. struct sk_buff { /* These two members must be first. */ struct sk_buff *next;-------------有没有人想过为啥不用内核标准的list来,而是单独两个成员?如果你有好的想法,可以跟我讨论. struct sk_buff *prev; #ifde…
步骤: 1.在/usr/src/linux-2.4.18-3/configs/目录下 找适合自己机器的内核配置文件.我用的kernel-2.4.18-x86_64.config,把它拷贝到/usr/src/linux- 2.4.18-3/目录下,并更改名称为.config 命令:cp /usr/src/linux-2.4.18-3/configs/kernel-2.4.18-x86_64.config /usr/src/linux-2.4.18-3/.config 2.用自己喜欢的编辑器修改.c…
这是一个硬件问题,不过被我这个学软件的给遇到了.很尴尬,纠结了很久. GPRS模块如果没有插上sim卡,开机之后一切正常.一旦插上卡之后开机大约过十秒钟之后会自动关机.并在串口上面打印一下信息: IIII RDY +CFUN: 1 +CPIN: READY +CREG: 0 +CREG: 2 Call Ready +CREG: 1 开始以为是SIM卡的问题,换了SIM卡依然如此.接着将串口拔掉,只是插上电源线,看不到串口的打印信息,不过模块依然是开机大约十秒之后自动关机.这时候我就开始怀疑是模块…
LINUX的时钟中断中涉及至二个全局变量一个是xtime,另一个则是jiffies.有一个与时间有关的时钟:实时时钟(RTC),这是一个硬件时钟,用来持久存放系统时间,系统关闭后靠主板上的微型电池保持计时.系统启动时,内核通过读取RTC来初始化WallTime,并存放在xtime变量中,即xtime是从cmos电路中取得的时间,一般是从某一历史时刻开始到现在的时间,也就是为了取得我们操作系统上显示的日期,它的精度是微秒.这是RTC最主要的作用.jiffies是记录着从电脑开机到现在总共的时钟中断…
Linux中有硬件时钟与系统时钟 在Linux中有硬件时钟与系统时钟等两种时钟.硬件时钟是指主机板上的时钟设备,也就是通常可在BIOS画面设定的时钟.系统时钟则是指kernel中的时钟.当Linux启动时,系统时钟会去读取硬件时钟的设定,之后系统时钟即独立运作.所有Linux相关指令与函数都是读取系统时钟的设定.   系统时钟的设定就是我们常用的date命令,而我们写的RTC驱动就是为硬件时钟服务的,它有属于自己的命令hwclock,因此使用date命令是不可能调用到我们的驱动的(在这点上开始把…
作者:云天明链接:https://www.zhihu.com/question/50764115/answer/122613742来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. cpu里面有可编程间隔定时器(PIT,Programmable interval timer),目前x86-64/arm/8051-based的绝大多数cpu/mcu都是内置PIT的,PIT以一个可调节的时间间隔触发时钟中断,使得操作系统的时钟中断处理程序可以可调节地周期性运行.时钟中断处…
第一步, 我们需要看一下模块如何必须被建立. 模块的建立过程与用户空间的应用程序的 建立过程有显著不同; 内核是一个大的, 独立的程序, 对于它的各个部分如何组合在一起 有详细的明确的要求. 建立过程也与以前版本的内核的过程不同; 新的建立系统用起来更 简单并且产生更正确的结果, 但是它看起来与以前非常不同. 内核建立系统是一头负责的 野兽, 我们就看它一小部分. 在内核源码的 Document/kbuild 目录下发现的文件, 任何想 理解表面之下的真实情况的人都要阅读一下. 16 有几个前提…
原文链接:https://www.cnblogs.com/nerohwang/p/3621316.html hello.c 文件: #include <linux/kernel.h> /*Needed by all modules*/ #include <linux/module.h> /*Needed for KERN_* */ #include <linux/init.h> /* Needed for the macros */ MODULE_LICENSE(&qu…
https://www.cnblogs.com/mcy0808/p/5415689.html -sudo gedit /etc/rc.local 连上了CUG但还是打不开网页,是不是需要编辑Connection Information? 查看Connection Information时发现 IPv4信息为Unknow IPAddress:Unknown Broadcast Address:Unknown Subnet Mask:Unknown ifconfig eth0 192.168.1.1…
1 总体说明 Deadline调度器对一个请求的多方面特性进行权衡来进行调度,以期望既能满足块设备扇区的顺序访问又能兼顾到一个请求不会在队列中等待太久导致饿死.Deadline调度器为了兼顾这两个方面,通过红黑树来对请求按起始扇区序号进行排序,称为 sort_list ,通过 fifo 对请求按它们的生成时间进行排序,称为 fifo_list . batching - 每当确定了一个传输方向(读/写),那么将会从相应的 sort_list 中将一批连续请求 dispatch 到 request_…
1 IO路径 从内核角度看,进程产生的IO路径主要有三条: 缓存IO:系统绝大部分IO走的这种形式,充分利用文件系统层的page cache所带来的优势.应用程序产生的IO经系统调用落入page cache之后便可以直接返回,page cache中的缓存数据由内核回写线程在适当时机同步到底层的存储介质上,当然应用程序也可以主动发起回写过程(如fsync系统调用)来确保数据尽快同步打扫存储介质上,从而避免系统崩溃或者掉电带来的数据不一致性: 非缓存IO(带蓄流):这种IO绕过文件系统层的cache…
Linux模块机制浅析   Linux允许用户通过插入模块,实现干预内核的目的.一直以来,对linux的模块机制都不够清晰,因此本文对内核模块的加载机制进行简单地分析. 模块的Hello World! 我们通过创建一个简单的模块进行测试.首先是源文件main.c和Makefile. florian@florian-pc:~/module$ cat main.c #include<linux/module.h> #include<linux/init.h> static int __…
注:原博文地址http://blog.sina.com.cn/s/blog_4ba5b45e0102v25h.html ------------------------------------------------------------------------------------------------------------------------------------------- 本文将直接了当的带你进入linux的模块编译.当然在介绍的过程当中,我也会添加一些必要的注释,以便初…
参考: http://blog.csdn.net/gaoguoxin2/article/details/50220665 动态添加模块不需要编译内核. LINUX的模块主要由6部分组成: 1.模块的加载函数(必须) 当通过insmod或modprobe命令加载内核模块时,模块的加载函数会自动被内核执行,完成本模块的相关初始化工作. 2.模块的卸载函数(必须) 当通过rmmod命令卸载某模块时,模块的卸载函数会自动被内核执行,完成与模块加载函数相反的功能. 3.模块许可证声明 模块许可证(LICE…
本文旨在简单的介绍一下Linux的启动流程与模块机制: Linux启动的C入口位于/Linux.2.6.22.6/init/main.c::start_kernel() 下图简要的描述了一下内核初始化的流程: 本文我们分析一下do_initcalls ()函数,他负责大部分模块的初始化(比如U盘驱动就是在这里被初始化的). static void __init do_initcalls(void) { initcall_t *call; int count = preempt_count();…
Linux模块机制浅析 转自:http://www.cnblogs.com/fanzhidongyzby/p/3730131.htmlLinux允许用户通过插入模块,实现干预内核的目的.一直以来,对linux的模块机制都不够清晰,因此本文对内核模块的加载机制进行简单地分析.模块的Hello World!我们通过创建一个简单的模块进行测试.首先是源文件main.c和Makefile.florian@florian-pc:~/module$ cat main.c#include<linux/modu…