gpt4 book ai didi

linux - FUSE:链接基于 FUSE 的文件系统时如何获取调用进程的原始(非 root)用户

转载 作者:太空宇宙 更新时间:2023-11-04 12:53:20 33 4
gpt4 key购买 nike

我有两个旨在协同工作的链式 FUSE 文件系统,它们都以 root 身份运行:进程 P 尝试首先通过 FS1 访问文件 F; FS1 看向 FS2。现在 FS2 需要获取 P(而不是 FS1)的上下文信息(pid、用户和组),以验证 P 是否具有访问文件的权限。

推荐的方法是什么?

最佳答案

这里有效地回答了这个问题:Change UID/GID only of one thread in Linux

FS1 中访问 FS2 拥有的文件的文件系统操作(open、stat 等)需要作为调用进程的用户执行,以确保文件系统权限得到尊重。执行此操作的规范方法是使用特定于线程的 API setfsuidsetfsgid允许 FS1 在以 root 身份运行时执行文件系统操作,就好像它以非 root 用户身份运行一样。在 fs 调用失败时,应立即捕获 errno。之后,应该使用 setfsuid 和 setfsgid 将有效的 uid/gid 还原为 root/root。

请参阅此处的 fs_unlink 示例:https://sourceforge.net/p/fuse/mailman/message/29362682/

关于linux - FUSE:链接基于 FUSE 的文件系统时如何获取调用进程的原始(非 root)用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36487879/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com