Linuxサービスはログイン時にユーザー入力を収集します。

Linuxサービスはログイン時にユーザー入力を収集します。

特定の条件に基づいてログインシェルプロンプトを使用できるようにする前に、ユーザーにいくつかのテキストを要求するシステムサービスを定義したいと思います。

以下は私が望むタイプの例です。ユーザーが他のものよりも先にログインし、ユーザーが何でも入力できるようにする前に、ユーザーに好む名前を入力するスクリプトを実行します。名前はホームディレクトリのファイルに保存されます。ただし、名前ファイルがすでに存在する場合、スクリプトは何もしません。

ログインしたユーザーの外観は次のとおりです。

my-server login: joe-user
password: <user types in password>
System notice: joe-user we need to gather some information.
----
Please type in your preferred first name: 

プロンプトとファイル書き込みを実行するスクリプトは簡単ですが、ユーザーがログインするとすぐにスクリプトが選択されるようにサービスをどのように作成しますか?これは、ユーザーが使用するシェルに関係なく機能します。

ベストアンサー1

100%一致しませんが、十分に似ているようです。systemd-ask-passwordディスクに保存したくないシステムサービスにパスワードを提供する方法であるツールがあります。

たとえば、これらの質問に答えることができるエージェントは複数ですsystemd-tty-ask-password-agent

ただし、注:これらのクエリに応答するには、権限のあるユーザーが必要です(システム全体のクエリであり、どのユーザーにもバインドされていないため)。

権限のない特定のユーザーに何かを尋ねたい場合は、ログイン時に実行される自己作成スクリプト(たとえば、から呼び出す $HOME/.profile)がそのようなクエリを実行するのに適している可能性があります。

おすすめ記事