当前位置: 首页 > news >正文

如何做网站的书籍/上海seo顾问

如何做网站的书籍,上海seo顾问,做网站改字号代码,久久建筑网施工方案好用吗Linux Capabilities是一种细粒度的权限管理机制,用于将root用户的特权划分为具体的功能集。它允许将部分root特权授予非root进程。 可以在shell中运行: man capabilities将显示capability man page,其中包含有关Linux功能的详细信息。 文章目录 什么是CapabilitiesLinux Cap …

Linux Capabilities是一种细粒度的权限管理机制,用于将root用户的特权划分为具体的功能集。它允许将部分root特权授予非root进程。

可以在shell中运行:

man capabilities

将显示capability man page,其中包含有关Linux功能的详细信息。

文章目录

    • 什么是Capabilities
    • Linux Cap 分类
    • File Capabilities
    • Cap管理工具
      • libcap2-bin
      • libcap-ng-utils
    • Capabilities在容器中的应用
      • Docker
      • 进程权限集
        • 获取与解析
        • 运行具有某些权限的容器
      • kubernetes

什么是Capabilities

对于执行权限检查, 传统的UNIX实现区分两类进程: 特权进程(其有效用户ID为0,也称为超级用户或root)和非特权进程(其有效用户ID非零)。

特权进程绕过内核的所有权限检查,而非特权进程根据进程的凭证(通常为:有效用户ID、有效组ID和补充组列表)进行完整的权限检查。

从内核2.2开始,Linux将传统上与超级用户相关联的特权分成独立的单元,称为Capability,可以独立启用和禁用。

需要注意的是,功能是线程属性。

Linux Cap 分类

Linux capabilities可以分为以下几类:

文件系统相关:

  • CAP_CHOWN - 改变文件所有权
  • CAP_DAC_OVERRIDE - 忽略DAC权限
  • CAP_DAC_READ_SEARCH - 忽略文件读/搜寻权限
  • CAP_FOWNER - 忽略文件的所有权
  • CAP_FSETID - 忽略setuid/setgid位

设备相关:

  • CAP_MKNOD - 创建设备文件
  • CAP_NET_ADMIN - 管理网络子系统
  • CAP_NET_RAW - 使用RAW和底层网络协议
  • CAP_SYS_MODULE - 插入和删除内核模块
  • CAP_SYS_RAWIO - 执行raw I/O端口操作

进程相关:

  • CAP_SETPCAP - 转移其他进程的capabilities
  • CAP_SETUID - 设置UID
  • CAP_SETGID - 设置GID
  • CAP_SYS_ADMIN - 执行许多系统管理操作
  • CAP_SYS_PTRACE - 跟踪其他进程
  • CAP_SYS_CHROOT - 使用chroot限制根目录
  • CAP_KILL - 向其他进程发送信号
  • CAP_AUDIT_WRITE - 编写审计日志条目

系统管理:

  • CAP_SYS_BOOT - 重新引导系统
  • CAP_SYS_NICE - 修改进程优先级
  • CAP_SYS_RESOURCE - 修改资源限制
  • CAP_SYS_TIME - 修改系统时间

这只是capabilities的广义分类,某些capabilities可能属于多个类别。

基于最小特权原则,一个可执行文件可按需选择其中某些能力,而不是获取全部。

File Capabilities

自内核2.6.24起,内核支持使用setcap(8)将功能集与可执行文件相关联。文件功能集存储在名为security.capability的扩展属性中(请参阅setxattr(2))。写入此扩展属性需要CAP_SETFCAP功能。文件功能集与线程的功能集一起确定execve(2)后线程的功能。

文件功能比传统的setuid和setgid机制更加精细和灵活。

在引入文件功能(File Capabilities)之前,setuid为0的程序会授予执行它的进程全部特权。

Cap管理工具

libcap2-bin

功能很重要,因为允许决定进程所需的功能,而不是给予它完全访问权限 - 即使它并不需要。

功能特性于1999年在2.2内核中引入,但当时仅限于进程。2008年,功能也引入到文件中。

需要安装libcap2-bin

获取和设置功能的两个基本命令是setcapgetcapgetcap获取功能列表,而setcap用于为可执行文件设置特定功能。

请注意,要使用setcap, 必须传递原始文件,而不是符号链接文件。Linux中的符号链接是指向另一个文件的特殊文件。

设置功能:

$ sudo setcap cap_net_bind_service+ep /path/to/the/file  

获取功能:

$ sudo getcap /path/to/the/file

libcap2-bin附带了其他工具,包括capshgetpcaps

  • capsh也用于获取功能,帮助解码功能集。
  • getpcaps在检查Linux进程的功能时很有用。

举例说明,以ping为例。它需要打开原始套接字。只有root用户可以打开原始套接字或小于1024的端口。

我们如何为特定进程提供必要的功能? 答案是使用setcap来为可执行文件设置特定的Linux功能。

为ping设置特定的net_raw功能:

$ sudo setcap cap_net_raw=ep ping  

总而言之,功能涉及将root特权分成不同的级别,并帮助您为每个进程提供特定的功能。
例如:

  • CAP_CHOWN 更改文件的所有权。它允许root随意更改文件UID和GID。
  • CAP_KILL 杀死系统中正在运行的任何进程。
  • CAP_NET_BIND_SERVICE 允许您打开小于1024的端口,即使进程不是以root用户运行。

libcap-ng-utils

在处理功能时,另一个非常有用的软件包名为libcap-ng-utils,它带有netcapfilecappscap工具。这些工具在处理Linux中的功能时非常有用。

  • filecap查看可执行文件的所有功能。
  • netcap为通过TCP、UDP等在网络上通信的进程提供功能报告。
  • pscap查看正在运行的进程的功能

要安装libcap-ng-utils, 以CentOS 7为例:

yum -y install libcap-ng-utils

Capabilities在容器中的应用

Docker

默认情况下,容器在启动时会获得容器运行环境提供的某些默认功能。像Docker这样的工具为您提供了根据需求添加和删除功能的灵活性。要理解这一点,您需要知道您的容器为正常工作所需的功能,否则将无法达到预期效果。

例如,让我们运行一个busybox容器并检查运行该进程所具有的功能。

busybox容器基于busybox镜像,是一个轻量级容器,内置许多常用的UNIX实用工具,如awk、grep和tar。

docker run --rm -it busybox sleep 1h &

要获取正在运行的容器的PID,您可以使用docker inspect <container-id>。PID代表进程ID。它是在Linux系统上运行的每个进程的唯一数字ID。

$ docker inspect 7666636cd08c | grep -i PID
Output      "Pid": 23764,"PidMode": "","PidsLimit": null,

进程权限集

有五种不同类型的进程权限集。让我们理解每个权限所代表的含义:

  • CapInh(Inherited capabilities)是从运行的父进程传递到其子进程的权限。
  • CapPrm(Permitted capabilities)是进程允许拥有的权限。
  • CapEff(Effective capabilities)集是当前进程执行的所有权限。
  • CapBnd(Bounding capabilities)集是进程允许拥有的最大权限集。
  • CapAmb(Ambient capabilities)集包括当前生效的权限。它可以在以后应用于当前进程或其子进程。

在本文中,将重点关注有效权限集。大部分时候,会使用有效权限。

获取与解析

要获取容器的进程权限集, 运行以下命令:

$ grep Cap /proc/<container-pid>/status
CapInh: 00000000a80425fb
CapPrm: 00000000a80425fb
CapEff: 00000000a80425fb
CapBnd: 00000000a80425fb
CapAmb: 0000000000000000

这个输出不可读,所以要读取这个输出,需要使用来自libcap2-bin软件包的二进制文件capsh

此时,确保已安装libcap2-bin软件包。要解码有效权限,获取CapEff:之后写入的文本,并使用以下命令,应该会看到如下输出:

$ capsh --decode=00000000a80425fb
0x00000000a80425fb=cap_chown,cap_dac_override,cap_fowner,
cap_fsetid,cap_kill,cap_setgid,cap_setuid,cap_setpcap,
cap_net_bind_service,cap_net_raw,cap_sys_chroot,cap_mknod,
cap_audit_write,cap_setfcap

输出显示进程具有不同的权限。例如, cap_chown权限使程序有权更改文件的所有者或目录的所有者。chown命令使用此权限。
类似地,如果要进程打开/监听小于1024的端口,可以使用cap_net_bind_service,它允许进程绑定到小于1024的端口。

如果有进程的PID,也可以使用getpcaps获取进程的权限:

getpcaps 23808

运行具有某些权限的容器

现在,让我们尝试理解如何运行具有某些权限的容器。如果使用docker,可以使用--cap-add添加权限和--cap-drop放弃权限。例如,如果要运行有sys_admin权限的容器并放弃其他所有权限,可以如下:

$ docker run --rm --cap-drop=all --cap-add=sys_admin \   
-it busybox sleep 1h &

请注意,如果要添加或删除多个权限,必须再次添加相同的标志。

例如,如果要运行一个容器,放弃所有权限, 只使用SYS_ADMINNET_ADMIN权限,需要使用--cap-add标志两次。

$ docker run --rm --cap-drop=all --cap-add=sys_admin \  
--cap-add=net_admin -it busybox sleep 1h &  

kubernetes

如何在Pod中设置正确的权限?

通过在Kubernetes清单中使用SecurityContext,可以在容器中设置权限。让我用一个示例清单说明:

apiVersion: v1  
kind: Pod  
metadata:  name: pod  
spec:  containers:  - command:  - sleep  - "100000"  image: ubuntu  name: ubuntu-pod   securityContext:  privileged: false   capabilities:  drop:  - ALL  add:   - SYS_ADMIN  - NET_ADMIN

上述Kubernetes清单将创建一个具有Ubuntu镜像的Pod,并且只有两个权限:SYS_ADMINNET_ADMIN。在上述清单中,我们放弃了所有其他权限。

这比运行privileged: true的Pod要好得多,后者将添加所有Linux权限,约37个。

SYS_ADMIN几乎相当于授予容器root级访问权限,如果不需要,应避免使用。如果查看权限的手册页,则SYS_ADMIN也称为新的root。与SYS_ADMIN类似,NET_ADMIN允许您在系统上执行所有特权网络操作。

在Kubernetes中使用权限时,应该在前缀中放弃CAP这个词。

即使使用多容器Pod,也可以在每个容器中设置SecurityContext。您也可以使用工具(如tracee、inspektor-gadget和其他eBPF工具)来跟踪容器的权限。如果您不确定应用程序所需的权限,这将很有用。

相关文章:

Linux Capabilities

Linux Capabilities是一种细粒度的权限管理机制,用于将root用户的特权划分为具体的功能集。它允许将部分root特权授予非root进程。 可以在shell中运行: man capabilities将显示capability man page,其中包含有关Linux功能的详细信息。 文章目录 什么是CapabilitiesLinux Cap …...

【自制C++深度学习框架】前言

KuiperCourse 介绍 此GitHub项目是一个初学者的深度学习框架&#xff0c;使用C编写&#xff0c;旨在为用户提供一种简单、易于理解的深度学习实现方式。以下是本项目的主要特点和功能&#xff1a; 计算图&#xff1a;使用计算图来描述深度学习模型的计算过程&#xff0c;利用计…...

【高危】泛微 e-cology9 存在任意用户登录漏洞

漏洞描述 泛微协同管理应用平台(e-cology)是一套企业大型协同管理平台。 泛微e-cology9部分版本中存在前台任意用户登录漏洞&#xff0c;由于系统默认配置固定密钥进行用户身份验证。 当存在/mobile/plugin/1/ofsLogin.jsp文件时&#xff08;可能通过插件方式安装&#xff0…...

1TB文本的实时全文检索系统搭建

1个T的文本是多大呢&#xff1f;1TB 1000GB&#xff0c;1GB是10亿&#xff0c;1TB就是1万亿字节。如果是英文字符&#xff0c;1TB文本就是1万亿个英文字符&#xff0c;如果是中文字符而且都是UTF8格式&#xff0c;1个中文字符占3个字节&#xff0c;1TB文本是3333亿中文字符&am…...

RHCA---DO477---变量实验

实验目的如下: 1. 环境准备: 使用命令lab inventory-variables start初始化环境 2. 进入/home/student/git-repos目录克隆下载http://git.lab.example.com:8081/git/inventory-variables.git 3. 将目录下yaml文件内容以group_vars形式修改 4. 部署并将修改后ansible-playbook代…...

毕业生高频常用材料线上签,高校毕业季契约锁电子签章一站式助力

据人社部消息&#xff0c;2023年全国高校毕业生总规模将达1158万人&#xff01;毕业季开启&#xff0c;全国各地高校普遍面临三方协议、成绩单、证书、证明等毕业生高频常用材料签署量激增的现状。学生、教职工、学校常常疲于应对机械化的材料盖章工作。 #毕业季高频常用材料清…...

.ini配置文件介绍与解析库使用

【前言】 ini 文件是英文"Initialization"的缩写&#xff0c;即初始化文件。它用来配置特定应用软件以实现对程序初始化或进行参数设置。.ini文件由节(section)、键(key)、值(value)三种模块构成。在windows系统/嵌入式软件中有很多XXX.ini文件&#xff0c;例如Syste…...

牛客网Linux错题七

1.如何在命令行查看一台linux机器的CPU、SWAP分区信息、硬盘信息&#xff1f;(ACD) A. cat /proc/cpuinfo B. du C. cat /proc/swaps D. df -Ih 解&#xff1a; cat /proc/cpuinfo查看Linux设备的CPU信息&#xff0c;cat /proc/swaps查看Linux设备的交换分区信息&#xf…...

牛课刷题Day5(编程题)

1.合并数组 arr1 和数组 arr2。不要直接修改数组 arr&#xff0c;结果返回新的数组 正确答案&#xff1a; function concat(arr1, arr2) {let carr1.concat(arr2)return c } 解析&#xff1a; js的Array对象提供了一个叫concat()方法&#xff0c;连接两个或更多的数组&#x…...

javascript基础二十五:说说你对函数式编程的理解?优缺点?

一、是什么 函数式编程是一种"编程范式"&#xff08;programming paradigm&#xff09;&#xff0c;一种编写程序的方法论 主要的编程范式有三种&#xff1a;命令式编程&#xff0c;声明式编程和函数式编程 相比命令式编程&#xff0c;函数式编程更加强调程序执行…...

常见JavaScript加密算法、JS加密算法

常见JavaScript加密算法、JS加密算法 一、SHA-256加密算法二、Base64编码算法三、RSA加密算法四、AES加密算法五、HMAC-SHA256算法六、PKCS7填充 一、SHA-256加密算法 SHA-256是一种密码散列函数&#xff0c;可以将任意长度的消息压缩成256位的摘要值。以下是使用JavaScript实现…...

题解2023.6.5

D - Factorial Divisibility 对于a[i]>x的数一定可以整除&#xff0c;考虑a[i]<x的数&#xff0c;因为(x1)*x! (x1)! 统计ai出现的次数, 把他转换为大的阶乘, 如果, 最终1到x - 1, ai的出现次数均为0则说明可以被x!整除 #pragma GCC optimize(2) #pragma GCC optimiz…...

与声音计算研究相关的挑战赛——DCASE和L3DAS

前言&#xff1a;在本专栏的系列博文中&#xff0c;我将包含声学场景识别、声音事件检测、声源位置估计等利用机器学习或深度学习技术进行研究的、基于声音信号的相关工作成为“声音计算”。 本篇博文主要介绍与声音计算相关的两个近些年持续跟进的挑战赛&#xff1a;DCASE和L…...

实训总结-----Scrapy爬虫

1.安装指令 pip install scrapy 2.创建 scrapy 项目 任意终端 进入到目录(用于存储我们的项目) scrapy startproject 项目名 会在目录下面 创建一个以 项目名 命名的文件夹 终端也会有提示 cd 项目名 scrapy genspider example example.com 3.运行爬虫指令 scrapy craw…...

前端开发职业规划指南:如何做好职业规划与发展

引言 前端开发是目前互联网行业中最火热的职业之一&#xff0c;也是非常具有发展前景的职业之一。随着互联网技术的不断更新和发展&#xff0c;前端开发的职业规划也在不断地发生变化。本文将从几个方面来探讨前端开发的职业规划。 一、职业发展路径 1.前端初级工程师 前端初…...

创业第一步:如何写好商业计划书

即使你的项目不需要融资&#xff0c;你也把标准商业计划书作为一个工具模板来应用&#xff0c;帮助更全面的盘点你要做的事情。 撰写一份性感的商业计划书如同造房子&#xff1a;第一步是科学设计&#xff0c;打好结构&#xff08;有清晰的撰写逻辑&#xff09;&#xff1b;第…...

【Linux驱动】字符设备驱动相关宏 / 函数介绍(module_init、register_chrdev)

驱动运行有两种方式&#xff1a; 方式一&#xff1a;直接编译到内核&#xff0c;Linux内核启动时自动运行驱动程序方式二&#xff1a;编译成模块&#xff0c;使用 insmod 命令加载驱动模块 我们在调试的时候&#xff0c;采用第二种方式是最合适的&#xff0c;每次修改驱动只需…...

axios解决跨域问题

Vue3中使用axios访问聚合的天气API&#xff0c;出现跨域问题&#xff0c;需要在前端进行一些配置&#xff1a; 首先是修改vue.config.js&#xff1a; const { defineConfig } require(vue/cli-service) module.exports defineConfig({transpileDependencies: true,devServe…...

R语言作图——热图聚类及其聚类结果输出

代码 不多说了&#xff0c;做个记录&#xff0c;代码如下。 library(pheatmap) library(RColorBrewer) # args commandArgs(TRUE) betafile "twist_common_panel_434.csv" infofile "twist_common_panel_434.txt" title "twist_common_panel&qu…...

Tomcat优化

Tomcat优化 Tomcat默认安装下的缺省配置并不适合生产环境&#xff0c;它可能会频繁出现假死现象需要重启&#xff0c;只有通过不断压测优化才能让它最高效率稳定的运行。优化主要包括三方面&#xff0c;分别为操作系统优化&#xff08;内核参数优化&#xff09;&#xff0c;Tom…...

我的GIT练习TWO

目录 前言 GIT安装教程 Git作者 GIT优点 GIT缺点 为什么要使用 Git GIT练习TWO C1 C2 C3 C4 C5 C6 C7 总结 前言 Git 是一个分布式版本控制及源代码管理工具;Git 可以为你的项目保存若干快照&#xff0c;以此来对整个项目进行版本管理 GIT安装教程 点击进入查看教程…...

个人器件库整理

样品本 包含如下&#xff1a; 电容器件&#xff1a; 元件值封装备注钽电容47uF 10V1206钽电容10uF 10V1206电容10uF 10% 10V0603X5R&#xff0c;CL10A106KP8NNNC 元件值封装备注100nF电容50V&#xff0c;10%0603 电阻器件&#xff1a; 元件值封装备注75 Ω \Omega Ω…...

javascript——内存管理

JavaScript内存管理是Web开发中的一个重要主题。正确管理内存可以提高应用程序的性能和稳定性。本文将介绍JavaScript中的内存管理概念、常见的内存泄漏问题以及一些有效的内存管理技巧。 什么是JavaScript内存管理&#xff1f; JavaScript具有自动内存管理机制&#xff0c;开…...

Qt5.15.2安卓Android项目开发环境配置

1、Qt Creator 4.11.2 官方下载&#xff1a;https://download.qt.io/archive/qtcreator/4.11/4.11.2/ 镜像下载&#xff1a;https://mirrors.cloud.tencent.com/qt/archive/qtcreator/4.11/4.11.2/ 2、Qt 5.15.2 Android 官方更新器内部下载 参考&#xff1a;https://blog…...

第四十三章 弹跳训练2(灵识扫描)

“再不脱离便会陷死在里面。”这个声音似乎来自脑海深处某个隐秘角落。 双眼一睁&#xff0c;灵识退去&#xff0c;空空的头壳兀自嗡嗡作响&#xff0c;一股说不清道不明的失落感笼罩全身&#xff0c;似要将自己拖入抑郁的谷底。 不&#xff01;没什么好失落沮丧的&#xff01;…...

【location对象的方法,history对象,navigator--BOM】

location对象的方法 location.assign()//跟href一样&#xff0c;可以跳转页面&#xff08;也称重定向页面&#xff09; location.replace()//替换当前页面&#xff0c;因为不记录历史&#xff0c;所以不能后退页面 location.reload()//重新加载页面&#xff0c;相当于刷新按钮或…...

论文笔记:Normalizing Flows for Probabilistic Modeling and Inference

Abstract 正则流&#xff08;Normalizing flows&#xff09;提供了一种通用的机制来定义富有表达力的概率分布&#xff0c;只需要指定一个&#xff08;通常简单的&#xff09;基础分布和一系列可逆变换。 Intraduction 正则流通过将简单的密度通过一系列变换来产生更丰富、可…...

java 异常类介绍

Java 异常&#xff08;Exception&#xff09;是指在程序运行期间出现的错误或异常情况。Java 异常处理机制允许程序在出现异常情况时进行处理&#xff0c;避免程序崩溃或出现不可预知的错误 一、Java 异常的概念 Java 异常是指程序在运行期间出现的错误或异常情况。Java 异常…...

shiro 550 反序列化rce

Apach shiro 是一款开源安全框架&#xff0c;提供身份验证&#xff0c;授权&#xff0c;会话管理等。 shiro 550 反序列化漏洞rce 通关利用它反序列化的漏洞直接执行rce 加密的用户信息序列化后储存在名为remenber -me的cooike中。攻击者可以使用shiro默认密钥伪造cooike&am…...

【C++】---模板初阶(超详练气篇)

个人主页&#xff1a;平行线也会相交&#x1f4aa; 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 平行线也会相交 原创 收录于专栏【C之路】&#x1f48c; 本专栏旨在记录C的学习路线&#xff0c;望对大家有所帮助&#x1f647;‍ 希望我们一起努力、成长&…...