在檔案系統中隱藏數據

在檔案系統中隱藏數據

我想隱藏一些文件,這樣就ls -a找不到它了。我不是說添加“.”在檔案名稱前面。我在想是否可以創建單獨的系統呼叫來存取這些文件實際需要是向用戶隱藏一些日誌檔案。我正在儲存一些文件的 MAC 數據,並且不希望用戶看到這些日誌檔案。目前我只知道隱藏資料的一種方法,即添加“.”。在檔案名稱前面。但用戶透過簡單的呼叫就可以看到該檔案ls -a。所以我想知道是否有其他方法可以隱藏這些日誌資料?

答案1

正如其他人所指出的,如果這樣做的目的是阻止對持久文件的訪問,那麼隱藏它可能是錯誤的方法。在這種情況下,如果應用程式允許的話,使用適當的存取控制措施甚至加密技術可能是一種解決方案。另一方面,創造“隱”暫時的files 是一個完全合法的用例。

在 Linux 中,從核心版本 3.11 開始open()系統呼叫支援O_TMPFILE標誌,可用於建立未命名的暫存檔案。當使用該標誌時,路徑名參數 toopen()用於指定一個目錄,在該目錄下建立未命名的 inode。然而,作為主要用例O_TMPFILE然而,顧名思義,暫時的文件,這不適合持久存儲,因為當文件的最後一個文件描述符關閉時,文件將丟失,除非給文件命名。該文件的名稱可以是linkat()系統調用,除非O_EXCL除了 之外還指定了該標誌O_TMPFILE,在這種情況下,將阻止將檔案連結到檔案系統。

最近新增的O_TMPFILE功能非常重要,因為它可用於為臨時檔案提供以下屬性:

  1. 無競爭條件的創建。
  2. 關閉時自動刪除。
  3. 無法透過任何路徑名存取。
  4. 不受符號連結攻擊。
  5. 呼叫者無需設計唯一的名稱。

此外,此功能可用於建立最初不可見的文件,此時可以在文件上調整適當的文件系統屬性,然後透過一個原子操作將其連結到文件系統。這可以用來避免某些托克圖比賽條件。

該標誌的一個缺點O_TMPFILE是只有一部分檔案系統提供對其的支援。最初在 ext2、ext3、ext4、UDF、Minix 和 shmem 檔案系統中提供支援。 Linux 3.15 中新增了 XFS 支援。

答案2

無論您採取何種分離方式,root 仍然能夠存取它,因此您只能透過隱匿性獲得安全性,而這並不真正安全。如果您想隱藏其他使用者的存取權限,您可以使用權限。拒絕對檔案或目錄的讀取權限將實現您想要的。

答案3

安全研究員 Grugq 發現了一種他稱之為“拳頭”,“文件系統插入和顛覆技術”。他的演講讀起來就像他把文件系統放在奇怪的地方,例如EXT3 日誌文件、目錄文件和“壞塊”文件。這似乎是建議通過模糊性來保證安全性,但是你能做類似的事情嗎?

答案4

如果您想防止其他使用者(包括 root)讀取您的文件,您可以對它們進行加密。如果您還想隱藏檔案的名稱,您可以給它們虛假名稱,或使用 TrueCrypt 等加密檔案容器。在這種情況下,掛載檔案系統時 root 仍可存取這些檔案。

相關內容