サービスの開始前に存在しないシステム動的ユーザーによって発生する循環依存関係をどのように処理しますか?

サービスの開始前に存在しないシステム動的ユーザーによって発生する循環依存関係をどのように処理しますか?

私はdnscrypt-proxyが次のようになります。動的ユーザールートではありません。ただし、dnscrypt-proxyアップストリームDNSプロバイダに接続できるようにユーザーを指定するnftablesでファイアウォールルールを使用したいと思います。

今問題は、nftablesネットワークが起動する前に実行したいということです。これは大丈夫で必要なことですが、ユーザーがdnscrypt-proxy存在しないと文句を言います。

サービスdnscrypt-proxyはネットワークの起動後にのみ実行されるため、ユーザーはネットワークが起動した後にのみ作成されます。これを処理する標準/最も良い方法は何ですか?

  • 動的ユーザーの代わりに固定ユーザーを指定し、dnscrypt-proxy上記の他のセキュリティオプションを設定する必要がありますか?ここ手動で?

  • nftablesのユーザー名以外のものでサービスを検出する必要がありますか?

  • dnscrypt-proxy自分のシステムで手動でユーザーを作成し、systemdがすでに存在するので、削除せずにそれを使用できますか?

  • 起動するたびにnftables以前に実行されたサービスを作成し、そのユーザーを作成してdnscryptサービスが停止した場合は、systemdからそのユーザーを削除する必要がありますか?

ファイアウォールが既に実行中でdnscryptサービスが停止した場合はどうなりますか?ルールセットに記載されているユーザーIDがもう存在しないため、ファイアウォールがクラッシュしたり、どのような問題が発生したりしますか?

答え1

で答えを見つけたと思いますman 5 systemd.exec。このDynamicUser=設定は、システム上の既存の静的ユーザーとシームレスに実行されます。

構成された名前に静的に割り当てられたユーザーまたはグループがすでに存在する場合は、そのユーザーまたはグループが使用され、動的ユーザー/グループは割り当てられません。

DynamicUserこれは、すべての暗黙のセキュリティ設定を一度に設定し、ユーザーに持続させることを可能にするようです。 nftablesでこのユーザーを参照したいので、これが意味があるようです。

だから私がしたことは:

# systemctl stop dnscrypt-proxy.socket
# systemctl stop dnscrypt-proxy.service
# useradd --user-group --system dnscrypt-proxy
# systemctl edit dnscrypt-proxy.service

そして、以下を追加してください:

[Service]

   DynamicUser   = yes
   User          = dnscrypt-proxy
   Group         = dnscrypt-proxy

設定ファイルを保存し、サービスとソケットを再起動します。

# systemctl daemon-reload 
# systemctl start dnscrypt-proxy.service

関連情報