我有一个 FUSE 文件系统,我在其中编写了getxattr
和setxattr
这样的代码:
int mfs_setxattr(const char *path, const char *name, const char *value, size_t size, int flags)
{
... /* some translation processing of path to rpath */
int ret = lsetxattr(rpath, name, value, size, flags);
... /* some logging works */
if (ret == -1) {
return -errno;
}
return 0;
}
和
int mfs_getxattr(const char *path, const char *name, char *value, size_t size)
{
... /* some translation processing of path to rpath */
int ret = lgetxattr(rpath, name, value, size);
... /* some logging works */
if (ret == -1) {
return -errno;
}
return ret;
}
我已经对此进行了测试,除了功能之外它工作得很好:当我使用 setcap 为程序设置功能并运行它时,程序无法执行特权工作。尽管 getcap 返回了我之前设置的功能。
有人可以告诉我一种跟踪问题的方法或给我一些关于正在发生的事情的指示吗?