LSM的全称是Linux Security Modules,它是linux内核中用来支持更灵活的安全策略的一个底层框架,虽然听起来比较复杂,但是可以就把它理解成一组安插在linux内核的钩子函数和一些预留的被称为安全域的数据结构,下面先说说这个框架的由来吧。

  linux本身的机制就保证了linux拥有更好的安全机制,但是在这个机制下面,还是隐藏了许多的问题:

  1、权限粒度太大。用过linux的人应该对0644这样的访问权限设置不陌生,它对能够操作这个文件的用户做了限制,但是这个只是限制到了组,而没有更进一步的细分,当然,如果LSM只是用来限制这个的话,那么也就太没意思了,因为实现文件更细的控制粒度,ACL就能够很出色的完成,顺便提一下,ACL有一个分配的限制,如果哪位朋友需要用ACL进行粒度更细的访问权限控制的话,可能需要注意一下这方面的东西。

  2、root用户的权限太大。在linux中,root用户就是至高无上的,他拥有对机器的完全控制权限,可以做他想做的一切事情。但是很多时候,我们可能并不希望有root有这么大的权限,比如在现在比较流行的云存储中,用户肯定不希望服务提供商能够随意访问我们的文件,那么这个时候,就需要对root用户进行一定的设置了。

  由于这些问题的存在,所以出现了像SE Linux(Securiy Enhanced Linux )这样的增强补丁。但是每个系统对于具体安全细节的控制不尽相同, 所以Linus Tovalds 提出应该要有一个 Linux 内核所能接受的安全框架来支持这些安全策略,这个安全框架应该提供包含内核数据结构中的透明安全域以及用来控制、维护安全域操作的安全钩子,于是就有了LSM。

  LSM在内核中的位置,可以用下图来表示(注:这张图是我从网上找的,因为它确实很清晰地体现了LSM的位置,所以直接拿来使用了,因为现在不知道这张图的原出处,如果冒犯了您的权益,请告诉我,我马上删除,谢谢啦,呵呵):

  当用户态程序调用某些操作系统提供的函数的时候,比如read()函数,其会对应于内核中的一个系统调用,然后该首先会进行一些常规的错误检测,接着进行DAC(Discretionary Access Control)检测,再接着它会进行LSM检测。从上图中能够看出来,LSM其实是一个非常底层的安全策略框架,利用LSM,可以接管所有的系统调用,这样,我们就能对包括root在内的所有用户的权限进行控制,并且实现粒度更细的访问权限控制。

  当系统初始化的时候,LSM就是一个空的框架,它不提供任何的检测,其所做的全部工作几乎就是返回0,当然,有些不带返回值的函数除外。而我们则可以针对自己特定的需求来编写LSM,然后将我们编写的LSM钩子函数,通过其数据结构struct security_operations注册到系统中去,这样,我们的LSM检测就开始起作用了。

  在接下来的文章中,会通过项目中的一个部分——限制root用户对某些文件的访问权限来更具体的说明LSM这个框架,当然,略陈固陋,还请各位大牛多多指教,谢谢啦。呵呵

转载于:https://www.cnblogs.com/huangwei/archive/2011/01/01/1923891.html

利用LSM实现更安全的linux相关推荐

  1. iOS 15 只是一个更好看的 Linux 吗?

    尽管 iOS 已经来到第15个版本,但iOS明显要更年轻,从按辈分讲,Linux可能要管 iOS 叫大爷. 乔布斯与NeXT 在2007年iPhone发布会上,那时候iOS还叫iPhone OS,乔布 ...

  2. linux如何编译wine,利用winelib编译一个可在linux下运行的程序

    利用winelib编译一个可在linux下运行的程序 只是想既可以使用linux的api,又可以使用windows的api #include #include #include #include in ...

  3. centos哪个版本好用_Ubuntu VS CentOS,谁才是更好的 Linux 版本?

    几乎所有新手刚接触 Linux 时,都会被它众多的发行版本搞得一头雾水.截至目前,Linux 已经有几百个发行版本-- Linux 代表这自由和探索.因为,从技术上来说,Linux 只是一个内核,内核 ...

  4. java实现icmp攻击,利用java实现ICMP协议在linux环境配置

    先前在进行利用java实现ICMP协议在linux环境下配置的时候发现有 error: Failed dependencies: jdk >= 1.6 is neede by jpcap-0.7 ...

  5. iOS15只是一个更好看的Linux吗?

    本文转载自程序员不高兴 尽管 iOS 已经来到第 15 个版本,但 iOS 明显要更年轻,从按辈分讲,Linux 可能要管 iOS 叫大爷. 乔布斯与NeXT 在 2007 年 iPhone 发布会上 ...

  6. 利用SecureCRT工具在Windows与Linux传输文件命令

    利用SecureCRT工具在Windows与Linux传输文件命令 首先 按下ALT+P开启文件传输会话 : 1.设置Linux与Windows上传下载的路径 cd + 路径: 设置Linux目录 l ...

  7. 设计一个程序,要求新建一个名为“hello”的文件并利用write函数向其写入“linux下的c软件设计”。

    问题描述 设计一个程序,要求新建一个名为"hello"的文件并利用write函数向其写入"linux下的c软件设计". 大致思路 首先,新建文件使用到函数fop ...

  8. 利用虚拟机安装并配置Debian Linux系统的总结

    由于Windows XP最近故障频频,近乎崩溃,被我在上周日一怒之下重装了.重装XP已经轻车熟路了,使用系统之家的硬盘安装工具,不到半个小时就搞定了,很是方便. :)     但是重装带来的一个严重后 ...

  9. 【ZYNQ实战】利用AXI Quad SPI快速打通Linux至PL端SPI从设备

    关注.星标嵌入式客栈,精彩及时送达 [导读] 前面写过篇介绍ZYNQ基本情况的文章,今天来肝一篇实战文章介绍AXI quad SPI 使用方法,如果你正使用ZYNQ的这个IP,希望对你有所帮助. 初识 ...

最新文章

  1. mysql mof_mof提权
  2. spring.net nhibernate 分布布式事务(下)
  3. 强烈推荐10 个机器学习教程!(含视频链接)
  4. 基于指数平滑对心电信号进行PQRST模拟(第二种方案)
  5. django 怎么加权限 静态资源目录_Django:settings中关于static静态文件目录的设置...
  6. 数据库系统内部体系结构与外部体系结构
  7. array_keys_PHP array_keys()函数与示例
  8. elementui表单校验原始密码_javascript 中入门数据校验
  9. GDKOI2018发烧记
  10. 小明的调查统计(二)
  11. Oracle ORA-06861: 文字与格式字符串不匹配 记录两次无助的遭遇:存储过程直接执行正常,java调用存储过程则报错
  12. Mindjet MindManager2022中文语言版思维导图软件
  13. python爬虫英文单词_Python_爬虫百度英文学习词典
  14. JNi调用过程(转载)
  15. steam 集换式卡牌挂卡软件 ASF Linux服务器搭建
  16. 【论文笔记】Contextual Diversity for Active Learning(ECCV2020)
  17. OPC基本知识介绍——什么是OPC
  18. FCKEDITOR编辑器的使用
  19. Nordic NRF51822 从零开始系列(一)开发环境的搭建
  20. 基于C#制作一个音乐播放器

热门文章

  1. 网站建设要重视与客户之间的沟通
  2. 网站建设初学者一定要清楚网站建设基本因素和流程
  3. 网站不同优化时段的优化方法介绍
  4. 发文平台对文章发布的基本要求
  5. 计算机控制直流电机闭环调速实验,最小拍控制系统及直流电机闭环调速控制系统设计和实现实验报告...
  6. linux系统简单操作代码,Linux系统编程:简单文件IO操作(示例代码)
  7. vrp车辆路径问题 php,蚁群算法在车辆路径问题(VRP)中的应用.ppt
  8. 怎么修剪_夹竹桃怎么养?这样“修剪”一下,一年开3、4次花,花大色艳
  9. ElasticSearch 深入理解 三:集群部署设计
  10. LibreOJ #113. 最大异或和