2016-07-12 115 views
-1

我想了解文件系統和內核相關的方式,以及它們如何一起工作,具體是關於權限。文件系統(和)權限的執行

(我知道,其實,文件系統在內核空間中運行,但在這方面,我認爲他們兩個分開的實體。)

當Bob(UID = 1001,GID = 1001,組= 「人類,未成年人」)試圖讀取「file.txt」,比如說,「rwx r-- --x」與「owner = Alice」和「group owner = minor」 - 內核的哪一個和 的文件系統,允許訪問?

文件系統是否有一個函數將Bob的組,Bob的UID和內核發送的其他東西(它允許文件系統確定Bob是否可以讀取目標文件)的參數作爲參數?此外,如果這是它的工作方式 - 內核如何知道文件系統需要擴展/特殊屬性的數據?例如,在Synology擴展屬性(ext4/btrfs)的情況下。

非常感謝任何幫助/資源閱讀。

回答

0

給你好日子!

在我看來 - 當內核收到用戶的請求(例如打開文件)時,它會分析用戶的訪問權限。如果它們正確 - 內核管理硬件以向用戶提供所請求的數據。在一個計算機系統(由內核和文件系統組成,還包括輸入,存儲和輸出數據的硬件)的上下文中,文件系統本身不可能做出決定(比如內核做);它只是一種信息結構,按照操作規則定義的方式編寫(內核必須具有訪問權才能正確交互;這些規則可以存儲在內核中)。因此,內核決定提供訪問權限(如果是完成請求,則內核會運行數據)。文件系統是一組硬件上存儲的數據和軟件部分(作爲內核的指令:如何操縱硬件的物理層,以及如何決定邏輯層上的訪問提供);但決定性的角色又取決於內核(它必須符合所有提供的規則)。

這個變體只是一個變種,它可能在不同的操作系統實現中有所不同。我不知道,他們中的哪一個被實現(無論這是OS「Linux」還是OS「Windows」方法,或者不是)。例如,如果我們描述用戶連接的遠程雲存儲 - 此存儲(作爲所描述內核的一些內容;可能是其內核)決定是否授予訪問權限;而本地內核就像一個用戶,遠程系統就像一個內核。

此外,我在這裏看到了一個類似的(或相對的)「堆棧溢出」的問題:What does opening a file actually do? - 也許,你會發現一些額外的信息。