我有一个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返回了我之前设置的功能。
有人可以告诉我一种方法来跟踪问题或者给我一些关于发生了什么的指示吗?
答案 0 :(得分:-1)
我认为一个好的起点是init函数。你得到一个参数
struct fuse_conn_info *conn
此结构包含以下字段
现在我还没有对此进行过实验,但我打赌“想要”字段是您需要修改的。您拥有的选项如下
我不确定这有多大帮助,但这是一个开始。人们会说有一些线程,如果你实际上能够以某种方式禁用这些功能,那么你将获得巨大的性能提升。 但我还是没有找到如何做到这一点。