私がやろうとしていること:
アプライアンスとして扱われるマシンがあり、複数のグラフィカル アプリケーションが開いており、これらを決して閉じてはなりません。
HumanA はシステムの電源を入れ、アプリケーションを起動し、画面をロックする可能性があります。
シフトが変わり、HumanB がマシンの責任を引き継ぎます。
ここで、HumanB はシステムにログインし、HumanA が起動したのと同じグラフィカル アプリケーションを表示する必要があります。
今日のやり方
現在、1 つのユーザー アカウント (UserX) を持ち、HumanA と HumanB の両方が UserX のパスワードを知っていることでこれを実現します。
問題は、このシステムの監査にあります。週末に何か非常に悪いことが起こったと判断された場合、ログ ファイルには UserX がログインしたことしか記録されません。これでは、当社の規制を満たしていません。
何をしたいのか
HumanA と HumanB が互いのパスワードや共有パスワードを知らないようにする必要があります。
HumanA と HumanB がログインして同じグラフィカル ユーザー環境を表示できるようにする必要があります。
監査の観点から、どの人間がいつログインしたかを判断できる必要があります。
** 説明 **
これはコンピューター/モニター/キーボードのセットアップであり、リモートまたは SSH セッションを心配する必要はありません。
人間は同時にシステムを使用するわけではありません。
アプリケーションを「移動」するトリックは、高性能コンピューティング タスクの中断を引き起こすことはできません。1 ミリ秒の中断でさえも許容されません。
現在はyoctoとXFCEを使用しています。
アプリケーションは書き直したり再設計したりすることはできず、グラフィカルなままである必要があります。
答え1
UserX にグラフィカル セッションを開いてもらいながら、グラフィカル アプリケーション上でスクリーン グラブを実行する別のアプリケーションを追加することもできます。HumanA は、そのスクリーン グラブ アプリケーションを通じて「ログイン」できます。アプリケーションは、HumanA が現在システムを操作していることを記録します。
シフトの終了時に、HumanA は、(長時間実行されているグラフィカル アプリケーションを介して) スクリーン グラブ アプリケーションを再起動して「ログアウト」します。そのため、HumanB が到着すると、スクリーン グラブを介して「ログイン」する必要があり、ユーザーの変更を記録できます。
答え2
少しハックっぽいですが、同じ uid を持つ複数のユーザーを使用することで管理できると思います。次のようにすることができます/etc/passwd
:
Appliance:x:1000:1000::/home/machine:/bin/bash
HumanA:x:1000:1000::/home/machine:/bin/bash
HumanB:x:1000:1000::/home/machine:/bin/bash
(さらに の対応するエントリが/etc/shadow
あれば、passwd HumanA
)
システムは実際にユーザーを uid で識別します。したがって、このような設定では、HumanA (HumanA のパスワードを使用) または HumanN (HumanB のパスワードを使用) の両方を入力すると、同じセッションになります。ただし、ログインに提供されたユーザーがログに記録されます。
システムが uid 1000 を名前に解決しようとすると、最初の結果が見つかり、「Appliance」が返されます。
もちろん、他の NSS プロバイダーでも同じトリックを実行できます。