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...