Shell-Script

是否有將密碼傳遞給 Systemd Unit 文件的典型方法?

  • February 1, 2021

我想使用 systemd 單元文件啟動服務。此服務需要密碼才能啟動。我不想將密碼以明文形式儲存在 systemd 單元文件中,因為它是世界可讀的。我也不想以互動方式提供此密碼。

如果我為此編寫一個普通腳本,我會將憑據儲存在具有受限權限(400 或 600)的 root 擁有的文件中,然後將該文件作為腳本的一部分讀取。是否有任何特定的 systemd 樣式的方法來執行此操作,或者我應該遵循與正常 shell 腳本中相同的過程?

根據您的要求,這裡有兩種可能的方法。如果您不想在啟動服務時被提示輸入密碼,請使用該EnvironmentFile指令。來自man systemd.exec

類似於 Environment= 但從文本文件中讀取環境變數。文本文件應包含以換行符分隔的變數賦值。

如果您確實想得到提示,您將使用其中一個systemd-ask-password指令。來自man systemd-ask-password

systemd-ask-password 可用於查詢使用者的系統密碼或密碼,使用命令行上指定的問題消息。從 TTY 執行時,它將查詢 TTY 上的密碼並將其列印到標準輸出。當沒有 TTY 或 –no-tty 執行時,它將使用系統範圍的查詢機制,允許活動使用者通過多個代理進行響應

引用自:https://unix.stackexchange.com/questions/391040