Linux 能力模型,它将传统的 all-or-nothing UNIX 权限模型划分成一个个能单独启用或者禁用的能力。
使用能力允许程序在执行一些特权操作的同时防止它们执行其他未经允许的操作.1.能力基本原理Linux 能力模型优化了对这个问题的处理方式,即在内核中执行安全性检测时不再使用单个权限(即有效用户ID为0),超级用户权限被划分为了不同的单元,这个单元称为能力。每个特权操作与一个特定的能力相关联,进程只有在拥有相应的能力的时候(这个时候不管用户ID是什么)才能执行相应的操作。2.进程能力内核会为每个进程维护3个能力集:1.许可的这些是一个进程可能使用的能力。许可的集合是能够被添加到有效的和可继承的集合中的受限超集。如果一个进程从其许可集中删除了一个能力,那么将永远也无法再重新获得该能力(除非它执行了一个再次授予该能力的程序)。2.有效的内核会使用这些能力来对进程执行权限进行检测。只有进程在其许可集中维护着一个能力,那么进程才能通过从有效集中删除这个能力来临时禁用该能力,之后再将该能力还原到这个集合中。3.可继承的当这个进程执行一个程序时可以将这些权限带入许可集中。通过Linux特有的 /proc/PID/status 文件中的 CapInh,CapPrm和CapEff 这3个字段能够查看任意进程的3个能力集的十六进制表示。fork() 创建的子进程会继承父进程的能力集副本。实际上,能力是一个线程级的特性,进程中的每个线程的能力都可以单独的进行调整。在 /proc/PID/task/TID/status 文件中可以查看一个多线程进程中某个具体线程的能力,/proc/PID/status 文件显示了主线程的能力。进程的许可集定义了进程能够使用的能力。进程的有效能力集定义了进程当前使用的能力---即内核会使用这组能力来检查进程是否拥有足够的权限执行某个特定的操作。3.文件能力如果一个文件拥有相关的能力集,那么这些集合会被用来确定赋给执行这个文件的进程的能力。1.许可的在 exec() 调用中可以将这组能力添加到进程的许可集中,不管进程的能力是什么2.有效的这个只有一位。如果被启用了,那么在 exec() 调用中,进程的新许可集中启用的能力再进程的新有效集中也会被启用。如果文件的有效位被禁用了,那么在 exec() 执行之后,进程的新有效集在一开始是空的。3.可继承的这个集合将与进程的可继承集取掩码来确定在执行 exec() 之后进程的许可集中启用的能力集。文件许可能力集为可执行文件向进程赋予能力提供了一种机制,它指定了 exec() 调用中被赋予进程的许可能力集的一组能力。4.在 exec() 中转变进程能力在 exec() 执行期间,内核会根据进程的当前能力以及被执行的文件的能力集来设置进程的新能力。5.能力边界集能力边界集是一种用于限制进程在 exec() 调用中能够获取的能力的安全机制。capset();
capget();

39.Linux/Unix 系统编程手册(下) -- 能力相关推荐

  1. linux/unix系统编程手册11-15

    title: linux/unix编程手册-11_15 date: 2018-05-27 11:53:07 categories: programming tags: tips linux/unix编 ...

  2. Linux/Unix系统编程手册 第三章:系统编程概念

    本章介绍系统编程的基础概念和一些后续章节用到的函数及头文件,并说明了可移植性问题. 系统调用是受控的内核入口,通过系统调用,进程可以请求内核以自己的名义去执行某些动作,比如创建子进程,执行I/O操作, ...

  3. Linux/UNIX系统编程手册gg

    Linux系统: "所见皆文件" 一个比较好的博客 一.Linux基础操作 Linux系统目录: bin:存放二进制可执行文件 boot:存放开机启动程序 dev:存放设备文件: ...

  4. Linux/Unix系统编程 五:进程

    进程是一个可执行程序的实例. 一.linux系统进程管理 1.进程管理的作用 判断机器健康状态 查看系统中所有进程 杀手进程 2.查看系统进程 1.ps -aux BSD操作系统格式: TTY说明: ...

  5. Linux系统编程手册-源码的使用

    Linux系统编程手册-源码的使用 转自:http://www.cnblogs.com/pluse/p/6296992.html 第三章后续部分重点介绍了后面章节所要使用的头文件及其实现,主要如下: ...

  6. Linux/Unix系统下nginx+php安装简明教程

    本文转载自Linux/Unix系统下nginx+php安装简明教程,请保留转载信息~ 一.安装nginx: 1. 安装pcre库,nginx的rewrite模板需用到pcre库: mkdir -p / ...

  7. 在Linux/Unix系统下用iconv命令处理文本文件中文乱码问题

    iconv命令是运行于linux/unix平台的文件编码装换工具.当我们在linux/unix系统shell查看文本文件时,常常会发现文件的中文是乱码的,这是由于文本文件的编码与当前操作系统设置的编码 ...

  8. 5w字总结 Unix系统编程学习笔记(面试向)(Unix环境高级编程/Unix环境程序设计)

    文章目录 一.计算 C语言的数据表示与处理 计算 C语言的基本运算操作 内存表和符号表 类型转换 函数类型的分析 指令 复合指令 句法 函数 函数激活(Activation Record) 函数激活定 ...

  9. ①Linux简明系统编程(嵌入式公众号的课)---总课时12h

    10.09 注意:这个是Linux高级编程的简明教程,是Linux应用程序的开发,而不是底层程序的开发. 内容是关于操作系统和网络编程的吗? Linux简明系统编程 〇.课程思维导图 〇.会用到的头文 ...

  10. 【Linux】系统编程之文件(标准I/O库)

    目录 一.文件I/O与标准I/O的区别(open与fopen) 1.来源 2.移植性 3.适用范围 4.文件IO层次 5.缓冲 二.函数fopen.fwrite.fread.fseek.fclose ...

最新文章

  1. vsftpd 的工作模式
  2. 小牛带你nginx反向代理中神奇的斜线
  3. 微软.NET年芳15:我在Azure上搭建Photon服务器(C#.NET)
  4. json介绍及简单示例
  5. 【干货笔记】CS224n-2019 学习笔记 Lecture 01 Introduction and Word Vectors
  6. Python 大数据的进行信用卡欺诈检测(附源码与注释)
  7. Solr 原理、API 使用
  8. Hacking the PS4, part 1
  9. 【贪玩巴斯】数字信号处理Digital Signal Processing(DSP)——第二节「离散时间信号详解」2021-09-29
  10. 【干货】微博短视频去水印下载使用介绍
  11. CAD中角度如何平分、CAD特性匹配的作用是什么?
  12. 乐视云盘停止视频上传 清查色情盗版信息
  13. java实现qq空间模块_最新免费QQ空间模块个性边框代码
  14. matlab黑白棋盘格,请不要一再错过!黑白棋盘格魔法瓷砖(组图)
  15. 汇编语言程序设计-贺利坚-专题视频课程
  16. c 标准和c++标准
  17. PTA 基础编程题 题解
  18. 推荐一款能让照片动起来的APP
  19. 5)-常用性能测试指标
  20. i18n如何在js文件中生效

热门文章

  1. nginx 认证访问web
  2. 13、第七 - 网络编程基础 - Python中协程EVENT()函数-事件函数
  3. python的包管理
  4. Cordova原理一
  5. SQL Server 2016 CTP3.2 开荒 Reporting Service 篇
  6. 请教如何实现UITextField值变化的实时监视
  7. forEach遍历对象数组案例
  8. Xcode 6 的新增特性
  9. 脱发、秃头防不胜防?这里有一份给码农的减压指南
  10. 手把手教你用R语言制作网络爬虫机器人(二)