systemd/service ユーザーは、シェルの同じユーザーと同じ権限/権限を持っていません。

systemd/service ユーザーは、シェルの同じユーザーと同じ権限/権限を持っていません。

Hashicorp Vault Agentをシステムサービスとして設定しようとしています。ユーザー資格情報のコレクションを使用してエージェントを手動で実行できます。

おそらくこれは重要です:これはこのユーザーの/ etc / passwdです:

vault:x:994:989::/home/vault:/bin/false

sudo su -s /bin/bash vaultでは、金庫会議に行くにはどうすればよいですか?

それを念頭に置いて、私はそれをすることができ、vault agent -config=<pathToConfig>それはうまくいきます。

これで/usr/lib/systemd/system/vault-agent.service設定しました。

[Unit]
Description="HashiCorp Vault - A tool for managing secrets"
Documentation=https://www.vaultproject.io/docs/
Requires=network-online.target
After=network-online.target
ConditionFileNotEmpty=/etc/vault.d/vault.hcl

[Service]
User=vault
Group=vault
ProtectSystem=full
ProtectHome=read-only
PrivateTmp=yes
PrivateDevices=yes
SecureBits=keep-caps
AmbientCapabilities=CAP_IPC_LOCK
Capabilities=CAP_IPC_LOCK+ep
CapabilityBoundingSet=CAP_SYSLOG CAP_IPC_LOCK
NoNewPrivileges=yes
ExecStart=/bin/vault agent -non-interactive -config=/etc/vault.d/agent-config-prod.hcl
ExecReload=/bin/kill --signal HUP $MAINPID
KillMode=process
KillSignal=SIGINT
Restart=no
RestartSec=5
TimeoutStopSec=30
StartLimitIntervalSec=60
StartLimitBurst=3
LimitNOFILE=65536

[Install]
WantedBy=multi-user.target

これは私が何度も見つけたサービスconfです。

しかし、常に同じ問題があります。Error storing PID: could not open pid file: open ./pidfile: permission denied

私はExecStart =を/ bin / whoamiに置き換えようとしました。はい、実際にVaultであることを確認するためでした。 ./pidfileの権限と場所(デフォルトのインストール場所):

/etc/vault.d/pidfile

drwxr-xr-x. 108 root root  8192 May 15 16:32 etc
drwxr-xr-x   3 vault vault     113 May 15 17:43 vault.d
-rwxrwxrwx 1 vault vault   0 May 15 17:48 pidfile #not default permission, but I am desesperate.

sudoコマンドは本当に疑わしいですsu -s /bin/bash vault。おそらくVaultユーザーにさらに権限を与えることもできます。それでは、これを私のサービスにどのように統合できますか?

毎回 systemctl reload デーモンを実行し、SELinux が無効になります。

PS:誰もがVault AGENT(rootではない)に対してsystemdを設定する方法への良いリンクがある場合は受け入れます。

編集:情報sudo -s /bin/bash vault

$ sudo -s /bin/bash vault
/bin/vault: cannot execute binary file
$ su -s /bin/bash vault
Password: (and I have no password or I don't know it)

だから私は完全なsudo su -s /bin/bash vault コマンドを使用します。

ベストアンサー1

オプションProtectSystem=full/etc文字通り読み取り専用でマウント:

ブール引数または特殊値「fu​​ll」または「strict」を使用します。 trueの場合、このデバイスを呼び出すプロセスは/usr/およびブートローダディレクトリ(/bootおよび/efi)を読み取り専用でマウントします。 "full" に設定すると、/etc/ ディレクトリも読み取り専用でマウントされます。

pidfileをプロセスの書き込み可能な場所に移動するか、ProtectSystem=fullサービスファイルからオプションを削除する必要があります。

systemdあなたは、あなたが使用している目的がわからない他のサービスオプションを確認する必要があります。設定に問題を引き起こす可能性がある他の多くの制限があります。

おすすめ記事