使用EncFS加密文件,以便特定使用者或進程可以存取它們,但root無法存取

使用EncFS加密文件,以便特定使用者或進程可以存取它們,但root無法存取

我有一個進程想要存取加密的檔案系統。使用EncFS 可以輕鬆做到這一點,但這需要使用者安裝加密的檔案系統,因此向任何有權存取安裝使用者的使用者提供對資料的存取權限,例如root。

是否可以讓進程掛載檔案系統,以便只有它才能存取資料?如果沒有,是否有其他方法可以防止那些不知道密碼的人存取資料?

答案1

Gilles說的是正確的,你無法阻止root存取掛載點。它可能無法直接存取安裝(沒有熔絲allow_other選項),但它始終可以切換到該用戶。

然而,您可以做的是在進程將其當前工作目錄變更為安裝點後延遲卸載安裝。一旦進程位於掛載點內,您就可以執行延遲卸載。這將阻止任何新進程存取安裝點,但在其中運行的進程將繼續具有存取權限。


例子

encfs /enc/source /enc/target
( cd /enc/target && some_long_running_process) &
fusermount -uz /enc/target

some_long_running_process,並且它產生的任何子進程都將具有對安裝點的完全存取權。但是,如果不是該行程的子程序的任何東西嘗試存取掛載,它只會得到一個空目錄。


請注意,有一個簡短的窗口,其中安裝點可用,其中其他內容可以將目錄更改為該窗口,但如果編寫腳本,則該窗口非常小。

另請注意,root 仍有幾種方法可以存取掛載點,但它們並不簡單,而且非常黑客式的。

答案2

只有掛載使用者才能存取encfs檔案系統。即使以 root 身分執行的進程也會出現「權限被拒絕」錯誤;當然,他們可以切換到掛載用戶,然後存取資料。

不可能使 root 無法存取資料。根據定義,root 是全能的,可以存取一切。你無法阻止 root 存取文件,就像你無法阻止上帝/聖誕老人/你的父母/… 1 知道你昨天晚上做了什麼一樣。如果您不信任某個用戶,請不要授予他們以 root 身分執行命令的權限。

¹選擇適用的一項。

答案3

好吧,根據這個標題為的問答:encfs 預期存取被拒絕聽起來如果特定使用者進行了安裝,即使 root 也無法存取 EncFS。

摘抄

但看起來您使用普通用戶來掛載加密目錄,然後您嘗試使用 root 使用 sudo 查看掛載的檔案。那是行不通的,而這正是 encfs 的全部意義。

在您的範例中,目錄 cr 是 encfs 使用的儲存。這裡面的內容不是什麼大秘密,都是加密資料。您正在將這些資料掛載到 mn 上,以便您可以以人類可讀的方式查看其內容,即 mn 下的檔案。

只有掛載 cr 的使用者才能讀取 mn 中的內容。連root都不能。

但對於更精明的用戶來說,沒有什麼可以阻止 root 只需執行 asu - <user>並成為該用戶,以便他們可以存取已安裝的 EncFS 共享。

正如本網站多次說過的那樣,您無法阻止 root 存取系統本地的任何內容。這就是系統的工作原理。 Windows 系統上的管理員也是如此。

相關內容