質問: linux:x11にログインしたローカルユーザーにメッセージを送信する方法 コンソールからx(xdm、fluxbox)にログインしているローカルユーザーにメッセージ(ポップアップウィンドウなど)を送信できますか?例:user1がログに記録され、x/fluxboxを使用して、user2がコンソールにsshで同じボックスにログインします。さて、user2にメッセージを送信するためにuser1は何をしなければなりませんか?
回答: 原則として、x11セッションは通常「プライベート」モードで開始されるため、画面にアクセスできるようにするためのuser2からの連携、またはスーパーユーザー権限での「侵入」のいずれかが必要です。彼らのスクリーン。危険:画面にアクセスできるようになったら、キーストロークのキャプチャ(パスワードを含む可能性があります)やスクリーンショットを撮ることもできるので、これは大きなセキュリティリスクです。mostの場合、代わりにメッセージングツールまたはチャットプログラムを使用することをお勧めします。脇に警告:連携user2がuser1に自分の画面へのアクセスを許可する場合は、最初にuser2が次のようなコマンドを発行する必要があります。 xhost +si:localuser:user1 これは、ある種の起動スクリプトに追加される可能性があります。 fluxboxはわかりませんが、rcまたはセッション開始フックがあると思います。これが発行されると、user1はuser2のディスプレイに書き込むことができます。user2がこれを認識している場合、他の方法でいつでもuser1に送信できます。他のユーザーのディスプレイを見つける一般的なワークステーションでは、1人または2人以上のユーザーがログインすることはまれです。その場合、必要な表示が0、1、またはおそらく2であると「推測」することは、実行可能な解決策になる可能性があります。ただし、より完全なソリューションとして、非常に多くのユーザーがサインインできるマシンがあると想定し、必要なものを見つけようとします。for proc in /proc/[0-9]*/ do if [ xorg = $(< $proc/comm ) ] 2>/dev/null && \ [ $(id -u user2) -eq $(< $proc/loginuid) ] 2>/dev/null then for subproc in $( do echo "user2 display=" $(perl -ne 'if (m,display=(.*)\0,) { print $1 }' < $subproc/environ) done fi done 次に、最終的にuser1ができます(上記で取得したdisplay値を使用。ここに:14.0を記述したところです...)display=:14.0 xmessage "hello, user2" 代わりに通知を送信する完全を期すために、少なくとも以下はgnomeデスクトップで動作します。 fluxboxに通知ウィジェットがあるかどうかわかりません。 display=:14.0 notify-send "hello, user2" これには表示のためのより多くのユーザーフレンドリーなオプションがあり、おそらくユーザーの画面にかなり親しみやすい方法でポップアップします。