zoukankan      html  css  js  c++  java
  • [linux]进程(十一)——进程权能

    进程权能介绍
    进程权能举例分析

    用户层对应的系统调用是prctl()函数,点击打开链接

    1,基本概念
    传统UNIX的访问控制模型非常简单,就是“超级用户对普通用户”模型。在这种模型中,一个进程或帐户要么什么都能做即具有全部的系统权限,要么几乎什么也不能做即只有很小的权限,这取决于进程的UID。例如,如果一个进程需要加载/卸载内核模块以及管理文件系统等操作时,就需要完全的root权限。很显然这样做对系统安全存在很大的威胁。
    2,进程权能
    Linux是如何使用POSIX capabilities代替传统的信任状模型的?每个进程有三个和能力有关的位图:inheritable(I)、permitted(P)和effective(E),对应进程描述符 task_struct(include/linux/sched.h)里面的cap_effective, cap_inheritable, cap_permitted。每种能力由一位表示,1表示具有某种能力,0表示没有。
     cap_effective。当一个进程要进行某个特权操作时,操作系统会检查 cap_effective的对应位是否有效,而不再是检查进程的有效UID是否为0。例如,如果一个进程要设置统的时钟,Linux的内核就会检查 cap_effective的CAP_SYS_TIME位(第25位)是否有效,
     cap_permitted表示进程能够使用的能力。在cap_permitted中可以包含cap_effective中没有的能力,这些能力是被进程自己临时放弃的,也可以说cap_effective是cap_permitted的一个子集。进程放弃没有必要的能力对于提高安全性大有助益。例如,ping只需要CAP_NET_RAW,如果它放弃除这个能力之外的其它能力,即使存在安全缺陷,也不会对系统造成太大的损害。
     cap_inheritable表示能够被当前进程执行的程序继承的能力。
    能力 编号 解释
    CAP_CHOWN 0 允许改变文件的所有权
    CAP_DAC_OVERRIDE 1 忽略对文件的所有DAC访问限制
    CAP_DAC_READ_SEARCH 2 忽略所有对读、搜索操作的限制
    CAP_FOWNER 3 如果文件属于进程的UID,就取消对文件的限制
    CAP_FSETID 4 允许设置setuid位
    CAP_KILL 5 允许对不属于自己的进程发送信号
    CAP_SETGID 6 允许改变组ID
    CAP_SETUID 7 允许改变用户ID
    CAP_SETPCAP 8 8 允许向其它进程转移能力以及删除其它进程的任意能力
    CAP_LINUX_IMMUTABLE 9 允许修改文件的不可修改(IMMUTABLE)和只添加(APPEND-ONLY)属性
    CAP_NET_BIND_SERVICE 10 允许绑定到小于1024的端口
    CAP_NET_BROADCAST 11 允许网络广播和多播访问
    CAP_NET_ADMIN 12 允许执行网络管理任务:接口、防火墙和路由等,详情请参考/usr/src/linux/include/linux/capability.h文件
    CAP_NET_RAW 13 允许使用原始(raw)套接字
    CAP_IPC_LOCK 14 允许锁定共享内存片段
    CAP_IPC_OWNER 15 忽略IPC所有权检查
    CAP_SYS_MODULE 16 插入和删除内核模块
    CAP_SYS_RAWIO 17 允许对ioperm/iopl的访问 
    CAP_SYS_CHROOT 18 允许使用chroot()系统调用
    CAP_SYS_PTRACE 19 允许跟踪任何进程
    CAP_SYS_PACCT 20 允许配置进程记帐(process accounting)
    CAP_SYS_ADMIN 21 允许执行系统管理任务:加载/卸载文件系统、设置磁盘配额、开/关交换设备和文件等。详情请参考/usr/src/linux/include/linux/capability.h文件。
    CAP_SYS_BOOT 22 允许重新启动系统
    CAP_SYS_NICE 23 允许提升优先级,设置其它进程的优先级//
    CAP_SYS_RESOURCE 24 忽略资源限制
    CAP_SYS_TIME 25 允许改变系统时钟
    CAP_SYS_TTY_CONFIG 26 允许配置TTY设备
    CAP_MKNOD 27 允许使用mknod()系统调用
    CAP_LEASE 28 Allow taking of leases on files

  • 相关阅读:
    Linux 3.2中回写机制的变革
    Linux字符设备与块设备的区别与比较
    分布式文件系统:原理、问题与方法
    为什么说B+-tree比B 树更适合实际应用中操作系统的文件索引和数据库索引?
    Linux IO barrier
    磁盘IO:缓存IO与直接IO
    【珍藏】高性能IO模型浅析
    souretree+上面提交代码和gerrit上面出现Cannot+merge的时候的解决方法
    vscode快速生成自定义HTML模板
    在jq里面设置样式的高度height、设置隐藏和显示的小功能
  • 原文地址:https://www.cnblogs.com/zhiliao112/p/4051376.html
Copyright © 2011-2022 走看看