`
runfeel
  • 浏览: 935657 次
文章分类
社区版块
存档分类
最新评论

[进程]capget()/capset() -- 获得/设置进程的权能

 
阅读更多

原型

引用
#undef _POSIX_SOURCE
#include <sys/capability.h>
int capget(cap_user_header_t hdrp, cap_user_data_t datap);
int capset(cap_user_header_t hdrp, const cap_user_data_t datap);


说明
capget() 用来获得进程的权能;capset() 用来设置进程权能。

相关的数据结构:

引用
#define _LINUX_CAPABILITY_VERSION_10x19980330
#define _LINUX_CAPABILITY_U32S_1 1

#define _LINUX_CAPABILITY_VERSION_20x20071026
#define _LINUX_CAPABILITY_U32S_2 2

typedef struct __user_cap_header_struct {
__u32 version;
int pid;
} *cap_user_header_t;

typedef struct __user_cap_data_struct {
__u32 effective;
__u32 permitted;
__u32 inheritable;
} *cap_user_data_t;


一般的,32 位系统要在程序中使用 _LINUX_CAPABILITY_VERSION_1 这个宏,而 64 位系统使用 _LINUX_CAPABILITY_VERSION_2 宏。
__user_cap_header_struct 结构体里:
version 就是上面的两个宏中的一个。
pid 为进程的 PID。

下面是这两个函数的简单用法代码:

引用
#undef _POSIX_SOURCE
#include <stdlib.h>
#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
#include <linux/capability.h>
#include <errno.h>

int main()
{
struct __user_cap_header_struct cap_header_data;
cap_user_header_t cap_header = &cap_header_data;

struct __user_cap_data_struct cap_data_data;
cap_user_data_t cap_data = &cap_data_data;

cap_header->pid = getpid();
cap_header->version = _LINUX_CAPABILITY_VERSION_1;

if (capget(cap_header, cap_data) < 0) {
perror("Failed capget");
exit(1);
}
printf("Cap data 0x%x, 0x%x, 0x%x/n", cap_data->effective,
cap_data->permitted, cap_data->inheritable);
}


注意,在 man 手册里使用 #include <sys/capability.h> 头文件。实际上,现在已经改为 #include <linux/capability.h>。

在普通用户时运行:

引用
$ ./capgset
Cap data 0x0, 0x0, 0x0

换为 root 用户时运行:

引用
#./capgset
Cap data 0xffffffff, 0xffffffff, 0x0
分享到:
评论

相关推荐

    基于PAM的用户权能分配实现源码

    这些权能可以通过PAM模块动态分配,例如,根据用户的身份、时间或其他条件,允许或限制他们执行某些敏感操作,如修改系统设置、访问特定文件等。 3. **PAM配置文件**:配置文件(如/etc/pam.d/service_name)决定了...

    在linux平台下的嵌入式可以执行进程

    push到linux开发的终端中,根据自己需要可以讲终端做server端或者是client端,pc连接,测试wifi吞吐量

    论文研究-基于主体的扩展权能技术研究与实现.pdf

    权能作为一种基于主体的访问控制手段,其实现方式灵活多样,使用方便。权能的概念很早就已经提出,已经成为分布式操作系统中的一种基本访问控制机制。通过对主体行为的限制,权能技术能方便地达到限制主体作用范围的...

    深入分析Linux内核源码.pdf

    **4.7 进程的权能** - 进程具有的权限和能力。 **4.8 内核同步** - **4.8.1 信号量** - 一种常用的同步机制。 - **4.8.2 原子操作** - 保证操作的不可分割性。 - **4.8.3 自旋锁、读写自旋锁和大读者自旋锁** - ...

    深入分析Linux内核源码

    **4.7 进程的权能** - **权限管理**: 控制进程能够访问哪些资源和服务。 - **用户ID和组ID**: 用于区分不同用户的权限。 **4.8 内核同步** - **信号量**: 用于同步进程对共享资源的访问。 - **原子操作**: 保证...

    Linux系统下Capabilities机制的改进与完善.pdf

    设置hash链表域的目的是为了能将可执行文件的权能信息以hash链表的形式组织存放于内核,使系统可以使用hash查找算法来快速获得可执行文件权能信息,从而加快权能信息的查询速度。 内核权能信息库的建立是...

    linux下的Capabilities安全机制分析

    3. **系统调用**:Linux提供了多个系统调用,用于查询和设置进程和文件的Capabilities,例如`getcap`、`setcap`等。 4. **信号处理**:当进程接收到特定信号时,可能会触发Capabilities的更新或改变。 #### 应用...

    多域物联网中基于区块链和权能的访问控制机制.pdf

    《多域物联网中基于区块链和权能的访问控制机制》这篇论文主要探讨了在物联网环境中,如何通过结合区块链技术和基于权能的访问控制(Capability-based Access Control, CapAC)来确保数据安全,防止隐私泄露。...

    论文研究 - 内部移民与增强妇女权能:孟加拉国达卡市女性服装工人研究

    本研究旨在探讨内部人口迁移作为人口统计过程对增强妇女权能的影响。 进行混合方法设计以进行本研究。 通过简单的随机抽样,选择了过去十年内从农村地区迁移到首都孟加拉国的一百三十六名妇女(136名)作为样本。 ...

    能源权能合约的对冲模型

    我们从在恒定绝对风险规避(CARA)-正态设置下开发的分析模型中得出这些合约中的封闭式最优套期保值头寸和最优均值-方差折衷。 我们从数学上证明了量化合约的使用可以使LSE降低其收入波动。 此外,我们的模型为将...

    2010级网络《操作系统原理》-a卷.pdf

    2. 权能表:用于控制和保护系统资源访问权限的表格。 3. 虚拟存储器:利用内存与硬盘的组合,使得程序可以使用超过实际物理内存大小的地址空间。 4. 进程同步:多个进程间协调其操作,以达到预期的并发执行效果。 5....

    Mac OS X and iOS Internals, To the Apple's Core

    - 端口对象和权能(capabilities)的概念。 - Mach 服务注册与发现的方式。 11. **时光飞逝:Mach 调度** - **章节内容**:本章讲解了 Mach 调度器的内部机制及其如何决定任务的执行顺序。 - **关键技术点**: ...

    2010级网络《操作系统原理》-a卷参考答案.pdf

    2. **权能表**:权能表是操作系统用于实现访问控制的一种机制,它将系统的保护矩阵分解为行向量,并存储这些向量,描述了不同主体对客体的操作权限。 3. **虚拟存储器**:虚拟存储器允许程序使用超过物理内存容量的...

    liunx中的消息队列学笔记。

    - **EACCES**: 调用进程在消息队列上没有写/读权能。 - **EAGAIN**: 由于队列的限制或标志设置问题,无法发送或接收消息。 - **EFAULT**: `msgp` 指针指向的内存不可访问。 - **EIDRM**: 消息队列已被删除。 #### ...

    浅谈特洛伊木马及防护系统设计

    - **进程隐藏**:采用多种技术使木马进程不可见。 - **端口隐藏**:不打开监听端口,使用特殊协议或反向连接技术。 - **数据加密**:加密传输的数据,增加检测难度。 - **自防御机制**:阻止反病毒软件扫描或删除...

    深入分析Linux内核源码.chm

    4.7 进程的权能 4.8 内核同步 第五章进程调度 5.1 Linux时间系统 5.2 时钟中断 5.3 Linux的调度程序-Schedule( ) 5.4 进程切换 第六章 Linux内存管理 6.1 Linux的内存管理概述 6.2 Linux内存管理的初始化 6.3 内存...

    (2021-2022)年专题资料农业现代化转型进程中的土地制度调整.doc

    通过将土地权益以股份的形式分配给农户,形成土地股份合作社,农户可以以其土地使用权作为股份参与分红,从而实现了土地的集中和有效流转,有利于农业规模化生产和现代化进程。 然而,土地股份投包制也存在挑战,如...

Global site tag (gtag.js) - Google Analytics