目錄功能 允許元件 來連線至其他元件提供的目錄
如要進一步瞭解個別元件隔離的目錄,請參閱 儲存空間功能。
提供目錄功能
如要提供目錄能力,元件必須宣告
從self
路。元件會代管
其
傳出目錄
,直接在 Google Cloud 控制台實際操作。
若要定義能力,請為該功能新增 capabilities
宣告:
{
capabilities: [
{
directory: "data",
rights: ["r*"],
path: "/published-data",
},
],
}
這定義了由元件代管的能力,該元件具有傳出目錄路徑
為 /published-data
,且可用性上限
rights 則為「唯讀」。
轉送目錄功能
如要進一步瞭解架構如何轉送元件功能, 請參閱功能轉送。
公開
公開目錄能力可讓元件的父項存取該元件 功能:
{
expose: [
{
directory: "data",
from: "self",
},
],
}
您可以視需要指定以下項目:
提供
提供儲存空間能力可讓子項元件存取該功能 功能:
{
offer: [
{
directory: "data",
from: "parent",
to: [ "#child-a", "#child-b" ],
},
],
}
您可以視需要指定以下項目:
使用目錄功能
如要使用儲存空間能力,元件必須要求能力並 開啟對應的路徑 命名空間 ,直接在 Google Cloud 控制台實際操作。
如要要求這項能力,請為該功能新增 use
宣告:
{
use: [
{
directory: "data",
rights: ["r*"],
path: "/data",
},
],
}
這會在元件的命名空間中,填入所提供的 path
目錄
包含共用目錄內容
您必須指定「rights
」。
您可以視需要指定 subdir
。
使用選用目錄功能
請參閱連結元件:使用選用功能。
目錄能力權限
目錄權限可讓元件像原樣地控制目錄的存取權 路徑會轉送到整個系統目錄權利的套用方式如下:
capabilities
:必填。 提供目錄可用的基本權利組合。任何權利 在use
、offer
或expose
中指定的是這些項目的子集 宣告。use
:必填。 說明取用元件要求的存取權限。offer
:選填。 目的地元件可用的已修改權利。沿用權限 來自offer
來源 (如果沒有)。expose
:選填。 目的地元件可用的已修改權利。沿用權限 來自expose
來源 (如果沒有)。
rights
欄位可包含下列項目的任意組合
fuchsia.io.Rights
符記:
rights: [
"connect",
"enumerate",
"traverse",
"read_bytes",
"write_bytes",
"execute_bytes",
"update_attributes",
"get_attributes",
"modify_directory",
]
這個架構提供使用別名宣告 rights
的簡化形式。
每個別名都代表一組提供通用的 FIDL 權利權杖組合
讀取、寫入或執行存取權:
別名 | FIDL 權利 |
---|---|
r*
|
connect, enumerate, traverse, read_bytes,
get_attributes |
w*
|
connect, enumerate, traverse, write_bytes,
update_attributes, modify_directory |
x* |
connect, enumerate, traverse, execute_bytes |
rw*
|
connect, enumerate, traverse, read_bytes, write_bytes,
get_attributes, update_attributes, modify_directory |
rx*
|
connect, enumerate, traverse, read_bytes, execute_bytes,
get_attributes |
rights
欄位只能包含一個別名。其他 FIDL 權利可能
附加。
範例
請參考以下範例,其中元件 A
要求讀取/寫入存取權
至 data
目錄:
// A.cml
{
use: [
{
directory: "data",
rights: ["rw*"],
path: "/data",
},
],
}
不過,父項元件 B
提供 data
目錄以元件 A
但只有唯讀權限。在這種情況下,轉送失敗,data
就不會
都出現在 A 的命名空間中
// B.cml
{
capabilities: [
{
directory: "data",
rights: ["r*"],
path: "/published-data",
},
],
offer: [
{
directory: "data",
from: "self",
to: [ "#A" ],
},
],
}
子目錄
您可 expose
、offer
或 use
是目錄能力的子目錄:
{
offer: [
{
directory: "data",
from: "parent",
to: [ "#child-a", "#child-b" ],
subdir: "children",
},
],
}
重新命名目錄
您可以使用其他名稱 expose
或 offer
目錄能力:
{
offer: [
{
directory: "data",
from: "#child-a",
to: [ "#child-b" ],
as: "a-data",
},
],
}