capset capget 設定和獲得程序許可權

2021-06-25 23:48:06 字數 1662 閱讀 3525



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 *cap_user_header_t;

typedef struct __user_cap_data_struct *cap_user_data_t;

例子:

#undef _posix_source

#include #include #include #include #include #include int main()

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("%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

0capheader: 19980330  6098

capdata: 400  400  0

UIView設定邊框 整體設定和分開設定

在開發中為uiview設定邊框是常常用到的功能,如果要為uiview四下都設定邊框,最簡單的方法是使用calayer的border屬性 void setviewborder uiview view color uicolor color radius float radius border floa...

jMeter漢化設定和背景外觀設定

1 漢化 啟動jmeter找到 options choose language chinese 簡體繁體自己選 但是設定完重新啟動後還會變為預設英文。永久預設漢化 在jmeter的安裝目錄下的bin目錄中找到 jmeter.properties這個檔案,用文字編輯器開啟。在 language en下...

設定使用者ID和設定組ID

與乙個程序關聯的id有6個或更多,如下圖所示 與每個程序相關聯的使用者id和組id 實際使用者id 實際組id 我們實際是誰 有效使用者id 有效組id 附加組id 用於檔案訪問許可權檢索 儲存的設定使用者id 儲存的設定組id 由exec函式儲存 通常,有效使用者id等於實際使用者id,有效組id...