2016-04-07 54 views
0

我有兩個旨在一起工作的鏈式FUSE文件系統,兩者都以root身份運行:進程P嘗試訪問文件F首先通過FS1; FS1看起來FS2。現在FS2需要獲取P(而不是FS1)的上下文信息(pid,user和group),以便驗證P有權訪問這些文件。FUSE:如何在鏈接基於FUSE的文件系統時獲取調用進程的原始(非根)用戶

這樣做的建議方法是什麼?

+0

如果他們都以root身份運行,沒有人知道P是誰。如果您要以root身份運行,在用戶空間中運行的要點是什麼?如果您有ssh訪問權限,並且您希望FS2知道您是誰,請直接登錄。如果您只能通過FS1訪問FS2,請使用ssh進行隧道。 – LinuxDisciple

+0

我的問題是關於一般的FUSE文件系統,而不是sshfs(在你的評論中隱含的細節)。 –

+0

我現在看到我錯誤地推斷了sshfs。 – LinuxDisciple

回答

0

這個問題是有效地在這裏找到答案:Change UID/GID only of one thread in Linux

從內FS1訪問由FS2擁有的文件需要作爲調用進程的用戶,以確保執行的文件系統操作(打開,統計等)文件系統權限受到尊重。執行此操作的規範方法是使用特定於線程的API setfsuidsetfsgid以允許FS1在以root用戶身份運行時執行文件系統操作,就好像它以非root用戶身份運行一樣。在fs呼叫失敗時,應立即捕獲errno。之後,應該使用setfsuid和setfsgid將有效的uid/gid恢復回root/root。

看到這裏的fs_unlink例如:https://sourceforge.net/p/fuse/mailman/message/29362682/

相關問題