在本節中,您將瞭解 Zircon 核心物件如何讓 Fuchsia 可 遵循最低權限原則、隔離流程 應用程式只需要的功能
沙箱
建立新程序時,該程序沒有任何功能。運作流程 讓創作者透過一組 帳號代碼 傳遞到這個檔案有人說 處理程序沒有環境授權。
因此,建立程序時通常會有一些初始資源
和功能fuchsia.process.Launcher
通訊協定提供低階介面,可透過可執行檔和一組核心物件句柄,在系統上建立新程序。大多數軟體都會使用元件架構,這可簡化設定新程序的作業,讓您能以標準的初始功能集執行程式碼。您將在本課程中
詳細資料
某些指派給程序的初始控點是程序掛接的目錄 傳入其命名空間。
命名空間
命名空間 包含容器 並控制此程序能影響多少 Fuchsia 系統。 這會有效定義處理程序的沙箱規則。
命名空間會填入各種資源物件,包括:
- 檔案:包含二進位資料的物件。
- 目錄:包含其他物件的物件。
- 通訊端:開啟時建立連線的物件,例如 直線號。
- 通訊協定和服務:在何時提供結構化服務的物件 已開啟。
- 裝置:提供硬體資源存取權的物件。
程序的 建立者會根據 所需的功能處理程序無法將物件新增至本身的 命名空間,因為這基本上是向該程序自行授予 存取這些物件
練習:命名空間
Fuchsia 中的大部分程序都代表與
在本練習中,您將探索元件命名空間的內容。
啟動模擬器
如果您尚未啟動執行個體,請啟動模擬器:
ffx emu start --headless
啟動完成後,模擬器會顯示下列訊息並 會傳回:
Logging to "$HOME/.local/share/Fuchsia/ffx/emu/instances/fuchsia-emulator/emulator.log"
Waiting for Fuchsia to start (up to 60 seconds)........
Emulator is ready.
尋找目標元件
在上一節中,您已瞭解處理與元件相關聯的程序
以 .cm
副檔名命名。請參考下列範例程序清單:
TASK PSS PRIVATE SHARED STATE NAME
j: 1027 507.8M 507.4M root
p: 1061 564.4k 564k 36k bin/bootsvc
p: 1150 4264.4k 4264k 36k bin/component_manager
j: 1479 228.4k 228k
p: 1583 228.4k 228k 36k pwrbtn-monitor.cm
j: 1484 532.4k 532k
p: 1599 532.4k 532k 36k svchost.cm
j: 1544 402.4k 304k
p: 1633 402.4k 304k 232k netsvc.cm
j: 1681 296.4k 296k
p: 1733 296.4k 296k 36k console-launcher.cm
j: 1799 7232.4k 7232k
p: 1825 7232.4k 7232k 36k archivist.cm
...
j: 31294 1872.2K 1872K
p: 31331 1872.2K 1872K 20K http-client.cm
在本練習中,您將使用 http-client.cm
做為探索目標。
連線至目標元件
為了探索元件的命名空間,必須判斷元件的 系統中的元件 ID這就是所謂的元件 猴子 ,直接在 Google Cloud 控制台實際操作。
使用 ffx component show
指令列出與
包括元件路徑名稱:
ffx component show http-client.cm
這個指令會顯示類似以下的輸出內容:
$ ffx component show http-client.cm
Moniker: /core/network/http-client
URL: #meta/http-client.cm
Type: CML static component
...
您可以使用 ffx component explore
指令開啟互動式殼層
將程式碼寫入目標元件環境在「http-client
」上試用這項功能
元件:
ffx component explore /core/network/http-client
在「探索殼層」中,使用
ls
指令:
[explore shell] $ ls
bin
exposed
ns
out
runtime
svc
探索命名空間
您可以在/ns
環境。
在「探索殼層」中,列出命名空間的內容:
[explore shell] $ ls /ns
config
pkg
svc
以下列出每個元素的簡短重點:
config/
:元件的設定資料pkg/
:元件套件的內容svc/
:元件可用的系統服務
在「探索」殼層中,列出傳入的 /ns/svc
的內容
目錄。這個目錄包含服務節點,代表提供給此元件的系統服務。
[explore shell] $ ls /ns/svc
fuchsia.logger.LogSink
fuchsia.net.name.Lookup
fuchsia.posix.socket.Provider
這些服務都可透過廣為人知的通訊協定 (由 Fuchsia 介面定義語言 (FIDL) 存取 API 進一步探討 FIDL 通訊協定及各種服務的存取方式 我們稍後將在課程 深入介紹這些原則及擬定過程
進入探索殼層時,輸入 exit
即可返回
開發機器:
[explore shell] $ exit