如何使用 C/C++ 通过 system() 系统调用以外的其他方法在 Linux 中获取文件功能?
How to get file capabilities in Linux using C/C++ with other method than system() system call?
我有一项任务要完成,其中一部分是获取某些文件功能并使用 C/C++ 检查它们是否设置正确。我想确保某些文件具有 cap_new_raw+ep 功能。除了使用系统(get_cap 文件)和读取输出(不返回值,输出)之外,还有什么其他方法可以实现它?
所以如果我很好地理解手册,这样的东西应该可以工作:
capt_t file_cap;
cap_flag_value_t cap_flag_value;
file_cap = cap_get_file("/path/");
if(file_cap != 0) {
if(cap_get_flag(file_cap, CAP_NEW_RAW, CAP_EFFECTIVE, &cap_flag_value) == 0) {
if(cap_flag_value == CAP_SET)
// it works
}
else // handle error
if(cap_get_flag(file_cap, CAP_NEW_RAW, CAP_PERMITTED, &cap_flag_value) == 0) {
if(cap_flag_value == CAP_SET)
// it works
}
else // handle error
}
else // handle error
我有一项任务要完成,其中一部分是获取某些文件功能并使用 C/C++ 检查它们是否设置正确。我想确保某些文件具有 cap_new_raw+ep 功能。除了使用系统(get_cap 文件)和读取输出(不返回值,输出)之外,还有什么其他方法可以实现它?
所以如果我很好地理解手册,这样的东西应该可以工作:
capt_t file_cap;
cap_flag_value_t cap_flag_value;
file_cap = cap_get_file("/path/");
if(file_cap != 0) {
if(cap_get_flag(file_cap, CAP_NEW_RAW, CAP_EFFECTIVE, &cap_flag_value) == 0) {
if(cap_flag_value == CAP_SET)
// it works
}
else // handle error
if(cap_get_flag(file_cap, CAP_NEW_RAW, CAP_PERMITTED, &cap_flag_value) == 0) {
if(cap_flag_value == CAP_SET)
// it works
}
else // handle error
}
else // handle error