跳到內容
Syno Package Land
語言: 繁體中文

能力

能力(capability)讓你的套件在 NAS 上多一項功能。沒有任何能力時,你的處理常式以套件帳號執行,並保存私有資料。你可以在建立專案時(init --with)或之後(add)加入能力。每項能力對應 dsm-package.yaml 中 capabilities: 底下的一個欄位。

能力--with/add 名稱Manifest 欄位
檔案filesfiles: session
登入loginidentity: standalone
背景工作jobsjobs: true
Delegate(委派)delegatedelegate: {…}(同時啟用 jobs)
Root 操作root-opsrootOps: true
Terminal window
synopkgland add files jobs

add 會更新 manifest 與 CLI 擁有的檔案,並保留你的處理常式與頁面。若你修改過的檔案會被 add 取代,它會以 ADD_FILE_CONFLICT 停止。不使用這些模板的套件,請見既有原生產品。

種類能力Root核准解除安裝
無升權 App無、files、login、jobs任何階段都不使用:安裝、執行與解除安裝時都不用。不需要DSM 會保留控制台 > 應用程式權限中這個 App 的規則,由管理員移除。
Executor Appdelegate 或 root-ops只透過受保護的 executor,限於已核准的策略。DSM 管理員核准一次。executor 會移除控制台 > 應用程式權限中這個 App 的規則,並停止它的登入入口網站網址。

只有 executor App 能宣告 portal。請見入口網站與資料與移除。

能力你的程式碼以誰的身分執行用途指南
無(基礎)套件帳號處理常式、設定與私有資料。原生 App
files已登入的使用者,透過他自己的 DSM 工作階段使用者登入 DSM 期間,瀏覽、上傳與下載他的 NAS 檔案。File Station 套用該使用者的權限。檔案
login套件帳號,並以 App 工作階段辨識使用者在 DSM 桌面之外,用 Synology 帳號登入。App 工作階段只辨識身分,不提供 File Station 存取。登入
jobs套件帳號在瀏覽器關閉後繼續執行,處理輸入的私有副本。背景工作
delegate受保護的 executor,寫入使用者選定的資料夾使用者離線後,把完成的檔案移入他的資料夾。Delegate
root-opsroot,執行你隨套件附上的固定腳本管理員執行具名操作,例如 root/whoami.sh。無法傳入引數。Root 操作

宣告能力並不決定誰能呼叫你的方法。每個方法都需要在 backend/internal/api/permissions.json 中有一條規則;沒有規則的方法只限管理員。dsm-package.yaml 的選用欄位 entry 可限制誰能開啟 App:admin-only 或 app-privilege。請見 Manifest。

動作誰時機
files、jobs、login不需要套件安裝後即可使用。
在安裝精靈中選取的共用資料夾DSM 管理員安裝後,在控制台 > 共用資料夾 > 編輯 > 權限 > 系統內部使用者,授予套件帳號存取權。請見共用資料夾。
delegate 與 root-opsDSM 管理員安裝後,管理員在 App 視窗中確認一次 DSM 密碼。在此之前,status 會顯示 needs-admin-approval。

delegate 與 root-ops 共用同一次核准,涵蓋 executor 與其策略。當你變更 entry、delegate 的範圍、目的地、生命週期或操作,或任何 root/*.sh 檔案時,管理員需要重新核准。版本號變更、介面變更,或策略相同的新版 SDK 都不需要新的核准。解除安裝會移除核准與委派,因此重新安裝需要重新核准。請見資料與移除。

模板filesloginjobsdelegateroot-ops
native-go 搭配 Vue是是,需 HTTPS是是是
native-go 搭配 plain 介面僅後端。不產生介面。否僅後端。不產生介面。僅後端。產生的管理員面板無法確認範圍。是
binary否否否否不提供腳手架
compose否否否否否
既有原生產品否否否否否

模板無法使用的組合會讓 check 以 CAPABILITY_UNSUPPORTED 或 CAPABILITY_COMBINATION_INVALID 失敗。容器 App 有自己的登入與存取模型,請見容器 App。

限制值
login 搭配 plain 介面init 與 check 會拒絕。login 介面需要 Vue 介面。
jobs 搭配 daemon會被拒絕,除非 delegate 設為 lifetime: until-revoked。
jobs worker只有內建的 sha256-v1。worker: 不接受其他名稱。
root-ops 最低 DSM 版本os_min_ver 為 7.1-42661 或更新。
armv7native-go 與 binary 可使用所有能力。armv7 的 executor、jobs 與 daemon 已建置,但尚未在 NAS 上驗證。
executor 支援的架構x86_64、aarch64 與 armv7。

root-ops 至少需要一個 root/<name>.sh;有 root/ 資料夾卻沒有 rootOps: true 時,會以 STANDALONE_ROOT_OPS_UNUSED 失敗。

症狀或錯誤碼原因解法
status 顯示 needs-admin-approval已宣告 delegate 或 root-ops 但尚未核准,或策略已變更。DSM 管理員在 App 視窗中核准。
CAPABILITY_UNSUPPORTED模板不支援該能力。改用 native-go,或移除該能力。請見錯誤碼。
CAPABILITY_COMBINATION_INVALIDlogin 搭配 plain 介面,或 jobs 搭配 daemon。改用 Vue 介面,或去掉其中一項。
ADD_FILE_CONFLICTadd 會取代你修改過的檔案。閱讀列出的路徑,手動合併,再重新執行 add。