GNU/Linux >> Linux の 問題 >  >> Linux

ルートとして別のユーザーのデスクトップでグラフィカルプログラムを起動しますか?

以下は、私が知る必要があると思う他の質問です:

  • X以外のセッションから? (ルートがXにログインしていないことを意味します)

  • 複数の人がXにログインしている場合、誰がどの画面にいるのかを自動検出して、アプリを起動する必要がある画面をプログラムで検出できますか?

  • ユーザーとしてアプリを起動できますか? (わかりました、99.999%はこれがイエスだと確信しています)

  • グループXのユーザーがXにログインしているかどうかを検出できますか?

承認された回答:

ユーザーのデスクトップでグラフィカルプログラムを起動するには、ユーザーのデスクトップが表示されているもの(アドレス)と使用する認証Cookie(パスワード)の2つを見つける必要があります。

次のコマンドは、ほとんどのユニスでユーザーがログオンしているローカルディスプレイ(1行に1つ)を一覧表示する必要があります。

who | awk -v user="$target_user" '$1 == user && $2 ~ "^:" {print $2}'

承認Cookieを見つけるのは少し難しいです。 ~/.XauthorityであるユーザーのCookieファイルを探す必要があります デフォルトでは(必要なのはCookieファイルの場所だけであり、そこからCookieを抽出する必要はありません)。これは多くのシステムで機能しますが、すべてではありません。それはディスプレイマネージャーとそれがどのように設定されているかに依存し、特にGdm(Ubuntuのデフォルト)は私が最後に見たデフォルトの場所を使用しませんでした。実際のXcookieファイルを見つけるためのポータブルな方法は考えられません。見つけるための最も正確な方法は、Xプロセスのpidを見つけて、-authへの引数を探すことです。 オプション。もう1つの方法は、そのXサーバーで実行されているプロセスを見つけて、そのXAUTHORITYを取得することです。 environemnt変数。 Cookieファイルが見つからない場合は、リモートXディスプレイでウィンドウを開く(「ディスプレイを開けない」理由)を参照してください。

両方の情報を入手したら、選択したディスプレイをDISPLAYに配置します 環境変数、XAUTHORITYで選択されたXオーソリティCookieファイル 環境変数、そしてあなたは設定されています。プログラムがどのユーザーとして実行されているかは関係ありません。 suと組み合わせる よろしければ。


Linux
  1. パスワードプロンプトなしでルートとして特定のプログラムを実行する方法は?

  2. ルートユーザーからNologinシェルを持つ別のユーザーに切り替える方法は?

  3. 別の C++ プログラム内で C++ プログラムを実行する方法は?

  1. デスクトップ環境をインストールせずに Firefox などのグラフィカル アプリケーションを実行することはできますか?

  2. RSA キーを使用してパスワードなしの ssh をセットアップする方法

  3. 単一のグラフィカル アプリを実行するためだけに、デスクトップまたは Windows マネージャーのない小さなディストリビューションが必要

  1. 「プロキシの構築中にエラーが発生しました…」Gnome-terminalをルートとして起動しようとすると?

  2. ファイルマネージャはルートなしでドライブをマウントするにはどうすればよいですか?

  3. root アクセスを許可せずに、あるユーザーが別のユーザーに su できるようにするにはどうすればよいですか?