Systemd

允許使用者重新啟動服務

  • April 5, 2021

我正在嘗試在沒有 root 身份的情況下重新啟動服務。這是正在使用命令的程式碼片段

template {
 source      = "{{vault_template_dir}}/agent.crt.tpl"
 destination = "{{vault_tls_dir}}/agent.crt"
 command     = "/usr/bin/systemctl restart vault.service"
}

在研究和閱讀了類似的問題之後,我嘗試通過編輯/etc/sudoers文件並添加以下行來為我使用的組(user=vault,group=vault)提供一個有限的 sudo 命令:

%vault ALL=(root) NOPASSWD: /usr/bin/systemctl restart vault.service

但是,當我嘗試執行命令時仍然出現錯誤。錯誤日誌文件:

Apr  4 23:27:41 xxxxxx vault[133973]: Failed to restart vault.service: Interactive authentication required.

保險庫服務

[Unit]
After=network.service hostname.service consul-init.service consul.service
Description="Hashicorp Vault - A tool for managing secrets"
Documentation=https://www.vaultproject.io/docs/
StartLimitInterval=200
StartLimitBurst=5

[Service]
User=vault
Group=vault
ExecStart=/usr/bin/vault server -config="{{vault_server_config_file}}"
ExecReload=/usr/bin/kill -HUP $MAINIP
CapabilityBoundingSet=CAP_SYSLOG CAP_IPC_LOCK
LimitNOFILE=65536
LimitMEMLOCK=infinity
Restart=always
RestartSec=30

[Install]
WantedBy=multi-user.target

有人可以幫我解決這個問題嗎?

您需要使用sudo來執行命令,因此您的模板需要如下所示:

template {
 source      = "{{vault_template_dir}}/agent.crt.tpl"
 destination = "{{vault_tls_dir}}/agent.crt"
 command     = "sudo /usr/bin/systemctl restart vault.service"
}

為了將來,請確保sudoers使用程序編輯文件visudo。如果您直接編輯/etc/sudoers,一個錯誤可能會將您鎖定在系統之外。

引用自:https://serverfault.com/questions/1059364