capset capget 设置和获得进程权限
来源:互联网 发布:java按键监听器 编辑:程序博客网 时间:2024/05/22 10:33
capset 和capget 分别用来设置和获取进程权限:
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);
相关的宏和数据结构
#define _LINUX_CAPABILITY_VERSION_1 0x19980330 #define _LINUX_CAPABILITY_U32S_1 1 #define _LINUX_CAPABILITY_VERSION_2 0x20071026 #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;
例子:
#undef _POSIX_SOURCE#include <stdlib.h>#include <stdio.h>#include <sys/types.h>#include <unistd.h>#include <sys/capability.h>#include <errno.h>int main(){ struct __user_cap_header_struct cap_header; struct __user_cap_data_struct cap_data; cap_header.pid = getpid() ; cap_header.version = _LINUX_CAPABILITY_VERSION_1; if( capget(&cap_header, &cap_data) < 0) { printf("%s\n", strerror(errno)); exit(EXIT_FAILURE); } printf("capheader: %x %d\n", cap_header.version, cap_header.pid); printf("capdata: %x %x %x\n", cap_data.effective, cap_data.permitted, cap_data.inheritable); __u32 cap_mask = 0; cap_mask |= (1 << CAP_NET_BIND_SERVICE); cap_data.effective = cap_mask;//类似于权限的集合 cap_data.permitted = cap_mask;//0001000000 cap_data.inheritable = 0;//子进程不继承特权 if( capset(&cap_header, &cap_data) < 0) { printf("%s\n", strerror(errno)); exit(EXIT_FAILURE); } printf("%d\n", capget(&cap_header, &cap_data)); printf("capheader: %x %d\n", cap_header.version, cap_header.pid); printf("capdata: %x %x %x\n", cap_data.effective, cap_data.permitted, cap_data.inheritable); return 0;}
---》必须以root权限或者sudo才能执行:
普通用户:
capheader: 19980330 6092
capdata: 0 0 0
Operation not permitted
root:
capheader: 19980330 6098
capdata: ffffffff ffffffff 0
0
capheader: 19980330 6098
capdata: 400 400 0
1 0
- capset capget 设置和获得进程权限
- [进程]capget()/capset() -- 获得/设置进程的权能
- [进程]capget()/capset() -- 获得/设置进程的权能
- 设置和获得VB进程返回值
- 用户权限设置和进程权限提升
- 【总结】用户权限设置和进程权限提升
- 【总结】用户权限设置和进程权限提升
- 用户权限设置和进程权限提升
- 【总结】用户权限设置和进程权限提升
- Ubuntu下获得root权限和设置静态IP
- 关于进程权限设置
- 关于进程权限设置
- 关于进程权限设置
- Windows设置进程权限代码
- Ubuntu下获得root权限和设置静态IP(VM5.0/7.0)
- 设置和获得混音器音量
- 关于ubuntu获得临时root权限和永久权限
- 获得当前进程ID和伪句柄
- struts与spring整合的原理
- Java实现快速排序
- 大型网站架构
- 编程实现识别内网中进行ARP欺骗的主机
- hdu 1428 漫步校园 (最短路+记忆化搜索)
- capset capget 设置和获得进程权限
- socket编程中的SIGPIPE信号
- UVA 1078 - Steam Roller(最短路)
- 数据结构 第一章 绪论
- 信号和槽
- linux 查看文件内容的命令
- Emacs-2-导航
- uva1494 - Qin Shi Huang's National Road System 次小生成树
- Java的进程与线程