実際にユーザーを切り替えることなく、別のユーザーとしてアプリケーションを起動できますか?


17

起動したアプリケーションが他のユーザーの設定/履歴/リソースなどを使用するように、別のユーザーとしてアプリケーションを起動する方法はありますか?

たとえば、Aliceとしてログインし、FirefoxをBobとして起動したいので、FirefoxはAliceの代わりにBobの閲覧履歴を表示します。

私は試した

$ su Bob
$ open -a Firefox

しかし、明らかな効果はありません。実際のところ、アクティビティモニターはFirefoxプロセスがボブではなくアリスによって実行されていることを示しています。

ボブのログイン資格情報が必要になることを理解していますが、それは問題ではありません。

回答:


16

コマンドラインからUnix実行可能ファイルを見つけて、sudoを使用して実行する必要があります

$ sudo -u Bob /Applications/Firefox.app/Contents/MacOS/Firefox 

…またはsuと同じ:(ただし、これにはrootのパスワードを設定する必要があります-これはお勧めしません)

$ su Bob
$ /Applications/Firefox.app/Contents/MacOS/Firefox

(…または上記の1行:)

$ su Bob -c /Applications/Firefox.app/Contents/MacOS/Firefox

過去において、PPC Macの最も簡単な方法はPseudoを使用することでしたが、長い間廃止されてきました。これは、Pseudoのアイコンまたはウィンドウにアプリケーションアイコンをドロップすることです。


ああ、鍵はUnix実行可能ファイルを見つけることでした。しsuたくない場合にも動作しsudoます。ありがとう!
ヤリケイネン

実行しようとしたときうーん、Google Chromeの私はこれを取得:Trace/BPT trap: 5
ヴォイチェフBednarski

このsudoアプローチを使用すると、他のユーザーに正しいパスワードを使用してもログインに失敗します。su一方、動作します(ルートセットのパスワードはありません)
LapplandsCohan

@lapplandscohan sudoは現在のユーザーのパスワードを
取得し

1
彼らは、セキュリティを考えている@ evan.bovie YTesショー
user151019

4

すべてのアプリケーションで機能しない理由については、https://apple.stackexchange.com/a/102105/1860を参照してくださいsu

launchdのbsexec

の最近のバージョンにlaunchdは、別のユーザーのセッション内でアプリケーションを起動する機能があります。Appleのエンジニアは一般的な使用を推奨していません。

launchctlbsexecオプションを使用して、適切なユーザーセッションをターゲットにします。

 bslist [PID | ..] [-j]
          This prints out Mach bootstrap services and their respective states. While the namespace
          appears flat, it is in fact hierarchical, thus allowing for certain services to be only avail-
          able to a subset of processes. The three states a service can be in are active ("A"), inactive
          ("I") and on-demand ("D").

          If [PID] is specified, print the Mach bootstrap services available to that PID. If [..] is
          specified, print the Mach bootstrap services available in the parent of the current bootstrap.
          Note that in Mac OS X v10.6, the per-user Mach bootstrap namespace is flat, so you will only
          see a different set of services in a per-user bootstrap if you are in an explicitly-created
          bootstrap subset.

          If [-j] is specified, each service name will be followed by the name of the job which regis-
          tered it.

 bsexec PID command [args]
          This executes the given command in the same Mach bootstrap namespace hierachy as the given
          PID.

 bstree [-j]
          This prints a hierarchical view of the entire Mach bootstrap tree. If [-j] is specified, each
          service name will be followed by the name of the job which registered it.  Requires root priv-
          ileges.

推奨されるアプローチは、launchdジョブチケットを作成してMacを再起動するか、ユーザーにログアウトして再度ログインするように依頼することです。



0

sshする必要があります。すなわちssh username@123.456.00。前に言ったように、ユーザーのパスワードが必要です。その後、あなたが求めていることを行うことができます。[システム環境設定]> [共有]でリモートログインを有効にする必要があります。
リモートログイン設定
そうすればopen -a Firefox、Firefoxは自分ではなく他のユーザーとして開きます。


残念ながら、私が手:LSOpenURLsWithRole() failed for the application /Applications/Firefox.app with error -10810.しようとしたときopen -a Firefox: - |
ヤリケイネン

@koiyuトライsudo open -na Firefox
daviesgeek

それは上記のように失敗した: - /(UNIXの実行が失敗に異なるにもかかわらず、また、パスを使用して。)
ヤリKeinänen

1
SSHセッションから開始されたプロセスは、GUIにアクセスできません。これがシステムで機能する場合、ある時点で低レベルの設定を変更したと思われます。
トバイアス

1
@daviesgeekですが、OPが望んでいたように、現在GUIを持っているユーザー以外のユーザーにSSHで接続しました。
トバイアス
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.