Capabilities的主要思想在于分割root用户的特权,即将root的特权分割成不同的能力,每种能力代表一定的特权操作。例如:能力CAP_SYS_MODULE表示用户能够加载(或卸载)内核模块的特权操作,而CAP_SETUID表示用户能够修改进程用户身份的特权操作。在Capbilities中系统将根据进程拥有的能力来进行特权操作的访问控制。在Capilities中,只有进程和可执行文件才具有能力,每个进程拥有三组能力集,分别称为cap_effective, cap_inheritable, cap_permitted(分别简记为:pE,pI,pP),其中cap_permitted表示进程所拥有的最大能力集;cap_effective表示进程当前可用的能力集,可以看做是cap_permitted的一个子集;而cap_inheitable则表示进程可以传递给其子进程的能力集。系统根据进程的cap_effective能力集进行访问控制,cap_effective为cap_permitted的子集,进程可以通过取消cap_effective中的某些能力来放弃进程的一些特权。可执行文件也拥有三组能力集,对应于进程的三组能力集,分别称为cap_effective, cap_allowed 和 cap_forced(分别简记为fE,fI,fP),其中,cap_allowed表示程序运行时可从原进程的cap_inheritable中集成的能力集,cap_forced表示运行文件时必须拥有才能完成其服务的能力集;而cap_effective则表示文件开始运行时可以使用的能力。
(一)Linux内核中Capabilities的实现机制Linux内核从2.2版本开始,就加进的Capabilities的概念与机制,并随着版本升高逐步得到改进。在linux中,root权限被分割成一下29中能力:
CAP_CHOWN:修改文件属主的权限
CAP_DAC_OVERRIDE:忽略文件的DAC访问限制
CAP_DAC_READ_SEARCH:忽略文件读及目录搜索的DAC访问限制
CAP_FOWNER:忽略文件属主ID必须和进程用户ID相匹配的限制
CAP_FSETID:允许设置文件的setuid位
CAP_KILL:允许对不属于自己的进程发送信号
CAP_SETGID:允许改变进程的组ID
CAP_SETUID:允许改变进程的用户ID
CAP_SETPCAP:允许向其他进程转移能力以及删除其他进程的能力
CAP_LINUX_IMMUTABLE:允许修改文件的IMMUTABLE和APPEND属性标志
CAP_NET_BIND_SERVICE:允许绑定到小于1024的端口
CAP_NET_BROADCAST:允许网络广播和多播访问
CAP_NET_ADMIN:允许执行网络管理任务
CAP_NET_RAW:允许使用原始套接字
CAP_IPC_LOCK:允许锁定共享内存片段
CAP_IPC_OWNER:忽略IPC所有权检查
CAP_SYS_MODULE:允许插入和删除内核模块
CAP_SYS_RAWIO:允许直接访问/devport,/dev/mem,/dev/kmem及原始块设备
CAP_SYS_CHROOT:允许使用chroot()系统调用
CAP_SYS_PTRACE:允许跟踪任何进程
CAP_SYS_PACCT:允许执行进程的BSD式审计
CAP_SYS_ADMIN:允许执行系统管理任务,如加载或卸载文件系统、设置磁盘配额等
CAP_SYS_BOOT:允许重新启动系统
CAP_SYS_NICE:允许提升优先级及设置其他进程的优先级
CAP_SYS_RESOURCE:忽略资源限制
CAP_SYS_TIME:允许改变系统时钟
CAP_SYS_TTY_CONFIG:允许配置TTY设备
CAP_MKNOD:允许使用mknod()系统调用
CAP_LEASE:允许修改文件锁的FL_LEASE标志

使用例子:

安装 Wireshark 的时候,有一步是给 dumpcap 读网卡的权限,使得普通用户也可以使用 Wireshark 进行抓包。# setcap 'CAP_NET_RAW+eip CAP_NET_ADMIN+eip' /usr/sbin/dumpcap

使用SetUID chmod u+s /path/to/application

在 root 用户下,用 setcap 命令给 /bin/ping 这个可执行文件加上 “cap_net_admin,cap_net_raw+ep” 权限,普通用户即可使用 ping.#setcap 'cap_net_admin,cap_net_raw+ep' /bin/ping

查看:getcap /bin/ping /bin/ping = cap_net_admin,cap_net_raw+ep

注意:setcap 一般用于二进制可执行文件。setcap 用于脚本文件时无效(比如以 #!/bin/python开头的脚本文件)

1024以内的端口:setcap cap_net_bind_service=+eip /home/tengine/nginx/tengine/sbin/nginx

-r是清除附加权限:setcap -r nginx

设置TOMCAT可以非ROOT用户启动 1024以下端口setcap cap_net_bind_service=+eip /opt/tomcat/bin/startup.sh

转自:

setcap详解

setcap详解-普通用户绑定1024以下端口相关推荐

  1. linux根-文件系统-目录管理-文件管理-用户及权限详解-用户组-用户管理-权限管理...

    一 .Linux文件结构 文件结构是文件存放在磁盘等存贮设备上的组织方法.主要体现在对文件和目录的组织上. 目录提供了管理文件的一个方便而有效的途径. Linux使用标准的目录结构,在安装的时候,安装 ...

  2. HIVE面试题原理详解 统计用户连续交易的总额、连续登陆天数、连续登陆开始和结束时间、间隔天数

    HIVE面试题原理详解 统计用户连续交易的总额.连续登陆天数.连续登陆开始和结束时间.间隔天数 友情提示 创建数据表 添加数据 流程图 第一步分析(子表a) 第二步分析(子表b) 第三步分析(子表c) ...

  3. 非root用户使用1024以下端口(Linux的Capabilities)

    非root用户使用1024以下端口 一.问题背景 二.解决方法 1.进入root用户 2.分配用户权限 总结 1.Capabilities介绍 2.Capabilities其他功能名称 3.Capab ...

  4. nginx非root用户使用1024以下端口

    nginx非root用户使用1024以下端口 nginx应用需要使用80和443端口,但是非root用户,nginx -t 检查文件是会报错: [majd@majd nginx]$ /home/maj ...

  5. linux setcap指令,Linux下setcap详解

    为啥要讲setcap这个玩意呢,因为最近在做国产化系统编译安装产品,遇到普通用户下Nginx不能够小于1024一下端口的问题. CAPABILITIES(7) 文档有一段: For the purpo ...

  6. vue 单相绑定_Vuejs第一篇之入门教程详解(单向绑定、双向绑定、列表渲染、响应函数)...

    Vuejs第一篇之入门教程详解(单向绑定.双向绑定.列表渲染.响应函数) 2018-12-30 什么是组件? 组件(Component)是 Vue.js 最强大的功能之一.组件可以扩展 HTML 元素 ...

  7. android 无法绑定 1024 以下端口

    平台 RK3288 + Android 7.1 问题 android 应用无法绑定 < 1024 的端口号. void tryBind80Port(){new Thread(){@Overrid ...

  8. linux 限制用户端口,linux – Centos 6.4只允许用户绑定到某个端口?

    我知道你可以使用网络命名空间来做到这一点,因为我就是这样做的.但它非常复杂. 这个过程就是这样. >使用取消共享创建网络命名空间 >使用ip link add type veth创建一个v ...

  9. Ubuntu 80端口无法使用-非root用户无法使用1024以下端口

    遇到问题:使用80端口失败,查询80端口占用,显示未占用. 可能的原因:当前用于未非root用户,故ubuntu下无法使用1024以下端口.(1023不可,1024可以) 解决方案: 0.改端口把 改 ...

最新文章

  1. 美国拟将14项关键技术列入出口管制清单 商务部回应
  2. python 自定义异常类
  3. 从动力学角度看优化算法:为什么SimSiam不退化?
  4. 牛客 - 牛妹的考验(AC自动机+dp)
  5. 为什么你总是申请不到大额贷款?
  6. java或异运算_java中与运算,或运算,异或运算,取反运算
  7. pandas和 excel 尝试
  8. 操作数组的常用方式二-----排序、查找
  9. 曾辉机器人_奋进者曾辉:在润物无声中深植教育初心
  10. USACO_1_2_Dual Palindromes
  11. PHPExcel存放多个sheet报错: Invalid parameters passed.
  12. 教育平台在线,教育平台源码 类似eduline教育平台系统源码下载
  13. 菩提心的修法-四无量心的具体修法
  14. 使用JavaScript重定向到其他网页
  15. 彐一夕儿本铺_2019-10-16汉字宫目录
  16. 更新1 80000字符,自制python小游戏,手写勿喷
  17. 网络架构及其演变过程
  18. iOS 导入自定义字体不生效
  19. 淘宝APP用户行为数据分析案例(附python代码及注释)
  20. webstrom怎么配置git并提交

热门文章

  1. 区块链-浏览器-可视化
  2. monorepo工作流基础之changesets打开与进阶(Speeches)
  3. 什么是数据敏感度!怎么培养数据敏感度?
  4. Nature neuroscience:一个庞大的连接认知神经科学和人工智能的7T fMRI数据集
  5. 脑卒中css评分是什么意思,CSS评分表多伦多临床评分系统
  6. 【Elasticsearch】黑马旅游网实践
  7. 隔墙有耳:黑客可以“听到”离线计算机的密钥
  8. java.util.sortedmap_SortedMap接口
  9. centos 邮件群发服务器,CentOS 使用 MUTT发送邮件
  10. ETAS 和 ESCRYPT