setcap详解-普通用户绑定1024以下端口
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以下端口相关推荐
- linux根-文件系统-目录管理-文件管理-用户及权限详解-用户组-用户管理-权限管理...
一 .Linux文件结构 文件结构是文件存放在磁盘等存贮设备上的组织方法.主要体现在对文件和目录的组织上. 目录提供了管理文件的一个方便而有效的途径. Linux使用标准的目录结构,在安装的时候,安装 ...
- HIVE面试题原理详解 统计用户连续交易的总额、连续登陆天数、连续登陆开始和结束时间、间隔天数
HIVE面试题原理详解 统计用户连续交易的总额.连续登陆天数.连续登陆开始和结束时间.间隔天数 友情提示 创建数据表 添加数据 流程图 第一步分析(子表a) 第二步分析(子表b) 第三步分析(子表c) ...
- 非root用户使用1024以下端口(Linux的Capabilities)
非root用户使用1024以下端口 一.问题背景 二.解决方法 1.进入root用户 2.分配用户权限 总结 1.Capabilities介绍 2.Capabilities其他功能名称 3.Capab ...
- nginx非root用户使用1024以下端口
nginx非root用户使用1024以下端口 nginx应用需要使用80和443端口,但是非root用户,nginx -t 检查文件是会报错: [majd@majd nginx]$ /home/maj ...
- linux setcap指令,Linux下setcap详解
为啥要讲setcap这个玩意呢,因为最近在做国产化系统编译安装产品,遇到普通用户下Nginx不能够小于1024一下端口的问题. CAPABILITIES(7) 文档有一段: For the purpo ...
- vue 单相绑定_Vuejs第一篇之入门教程详解(单向绑定、双向绑定、列表渲染、响应函数)...
Vuejs第一篇之入门教程详解(单向绑定.双向绑定.列表渲染.响应函数) 2018-12-30 什么是组件? 组件(Component)是 Vue.js 最强大的功能之一.组件可以扩展 HTML 元素 ...
- android 无法绑定 1024 以下端口
平台 RK3288 + Android 7.1 问题 android 应用无法绑定 < 1024 的端口号. void tryBind80Port(){new Thread(){@Overrid ...
- linux 限制用户端口,linux – Centos 6.4只允许用户绑定到某个端口?
我知道你可以使用网络命名空间来做到这一点,因为我就是这样做的.但它非常复杂. 这个过程就是这样. >使用取消共享创建网络命名空间 >使用ip link add type veth创建一个v ...
- Ubuntu 80端口无法使用-非root用户无法使用1024以下端口
遇到问题:使用80端口失败,查询80端口占用,显示未占用. 可能的原因:当前用于未非root用户,故ubuntu下无法使用1024以下端口.(1023不可,1024可以) 解决方案: 0.改端口把 改 ...
最新文章
- 美国拟将14项关键技术列入出口管制清单 商务部回应
- python 自定义异常类
- 从动力学角度看优化算法:为什么SimSiam不退化?
- 牛客 - 牛妹的考验(AC自动机+dp)
- 为什么你总是申请不到大额贷款?
- java或异运算_java中与运算,或运算,异或运算,取反运算
- pandas和 excel 尝试
- 操作数组的常用方式二-----排序、查找
- 曾辉机器人_奋进者曾辉:在润物无声中深植教育初心
- USACO_1_2_Dual Palindromes
- PHPExcel存放多个sheet报错: Invalid parameters passed.
- 教育平台在线,教育平台源码 类似eduline教育平台系统源码下载
- 菩提心的修法-四无量心的具体修法
- 使用JavaScript重定向到其他网页
- 彐一夕儿本铺_2019-10-16汉字宫目录
- 更新1 80000字符,自制python小游戏,手写勿喷
- 网络架构及其演变过程
- iOS 导入自定义字体不生效
- 淘宝APP用户行为数据分析案例(附python代码及注释)
- webstrom怎么配置git并提交
热门文章
- 区块链-浏览器-可视化
- monorepo工作流基础之changesets打开与进阶(Speeches)
- 什么是数据敏感度!怎么培养数据敏感度?
- Nature neuroscience:一个庞大的连接认知神经科学和人工智能的7T fMRI数据集
- 脑卒中css评分是什么意思,CSS评分表多伦多临床评分系统
- 【Elasticsearch】黑马旅游网实践
- 隔墙有耳:黑客可以“听到”离线计算机的密钥
- java.util.sortedmap_SortedMap接口
- centos 邮件群发服务器,CentOS 使用 MUTT发送邮件
- ETAS 和 ESCRYPT