web-dev-qa-db-ja.com

OS X Mountain Lionで別のユーザーとしてソフトウェアを実行することは可能ですか?

別のユーザーとしてアプリを実行しようとしています。

試行1
_Sudo -u otheruser open /Applications/TextEdit.app_はアプリを起動しますが、otheruserではなく、現在のユーザーを使用します。

試行2
_login username_および_su - otheruser_はotheruserとして正常にログインし、別のユーザーがアクティビティモニターにポップアップしますが、何か_open /Applications/TextEdit.app_のようにエラーLSOpenURLsWithRole() failed with error -10810 for the file /Applications/TextEdit.app.を返します

試行
_Sudo su - otheruser -c /Applications/TextEdit.app/Contents/MacOS/TextEdit_はアプリを起動しているようです(アクティビティモニターの下にotheruserによって起動されたように表示されます)が、このエラーはドックアイコンが無期限にバウンスします:_RegisterApplication(), FAILED TO establish the default connection to the WindowServer, _CGSDefaultConnection() is NULL.

質問
では…別のユーザーとしてアプリを実行するにはどうすればよいですか?

4
fregante

この質問に対する答えは、10.8 MountainLionでは完全に正しいとは思えません。 demureにはポイント2で入力エラーがあると思いますが、「-」以外の何かがあるはずです。私にとってうまくいくこと:あなたの試み3、su-cなし。

Sudo -u testuser /Applications/TextEdit.app/Contents/MacOS/TextEdit

これにより、テキストエディットがテストユーザーとして開き、ファイルを/に保存できます。 testuserのuserフォルダーへの保存は機能しませんでしたが、他のテスト目的で使用しているため、このアカウントにほとんど権限を与えていないことが原因である可能性があります。興味深いことに、KeyChain.appでrootユーザーを非アクティブ化しても、rootとしてログインすることもできます。これは、ターミナルログインではなく、ルートからのデスクトップログインにのみ影響するようです。 testuserとして保存したファイルには、正しい所有権などが設定されていました。

$ cd /
$ ls -la | grep testuser
-rw-r--r--    1 testuser  staff      330 18 Okt 20:07 Untitled.rtf
1
zerweck

誰かがまだこれを行う方法を探している場合に備えて、私はこのアプリを見つけました:

実行 http://josephbeeson.com/index.php?page=proj_en

それは私のために働いています。 (現時点ではbox.com同期アプリでテストしています)

1
daco

通常、GUIアプリを別のユーザーとして実行することは(root用に設計されたGUIソフトウェアのいくつかのケースを除いて)実際には機能しません。

This 以前は機能していましたが、現在のMacでも機能するかどうかはわかりません。逐語的:

これは、Apacheに関する別のヒントのコメントセクションから得たヒントを逆流させています(私は思います)。これにより、ユーザーがGUIを介してログインしなくても、プログラムを別のユーザーの制約内に保つことができます。バブル内で疑わしいプログラムを実行してください! 「バブル」を作りたい場合は、アクセスが非常に制限されたダミーアカウントを設定することをお勧めします。 注:これ以降、後続のアカウントを「バブルアカウント」と呼び、そのアカウントのセッションを「バブル」と呼びます。あなたはこれについて正しい考えです。

  1. 新しいターミナルウィンドウを開く
  2. 次のように入力します。ここで、short_nameは「バブル」アカウントの短縮名です。Sudo short_name -
  3. 「バブル」アカウントのパスワードを入力します。
  4. 次のように入力します。ここで、app_nameは開きたいアプリの名前です:/Applications/app_name.app/Contents/MacOS/app_name
    たとえば、これによりSafariが起動します。
    /Applications/Safari.app/Contents/MacOS/Safari

覚えておくべきいくつかのこと(非常に重要です!):

  • このアプリと他のアプリの間のコピーと貼り付けは、他のアプリもバブルに入っていない限り機能しません。
  • バブル内から実行されているアプリは、元のアカウントで後続のアプリケーションを起動できます(私が知る限り)。たとえば、Safariでバブル内のftp:// URLにアクセスすると、バブル以外のアカウントで実行されているFinderが使用され、使用可能なすべての権限が付与されます。
  • ターミナルを閉じる(またはウィンドウ内でCtrl + Cを押す)と、バブル内で実行されているアプリが閉じます。多くのプログラムは、プログラムの実行中のさまざまな時点で、これが完全に正常で予期されていることを知る前にプログラムした場合、ターミナルに例外や奇妙なメッセージを表示します。
  • バブルで実行されているプログラムの外観設定は、他の方法で実行されているものとは異なる場合があります。これを変更するには、バブルアカウントでログインし、システム環境設定に移動します
  • プログラムの2つのコピー(1つはバブルの内側と1つはバブルの外側)を実行すると、完全に機能します。実際、これを「バブル」Safariアプリで作成しています。
  • Safariを使用してドラッグアンドドロップできないなど、いくつかの問題が発生する可能性があります。それらを回避する*これはしないバブルアカウントの設定をファイルボルトifユーザーはバックグラウンドでログインしていません。

そして 別の ハックっぽい方法。ただし、次の例は両方ともX11アプリ用です

Sudo -i -u other_user \`  
  env DISPLAY="$DISPLAY" XAUTHORITY="${XAUTHORITY-$HOME/.Xauthority}" \`  
  xapplication`  

または

xauth extract -f - "$DISPLAY" |`  
Sudo -u other_user xauth -f ~other_user/.Xauthority merge -`
1
demure

openを使用してアプリケーションを起動します。

-aオプション-アプリケーションTextWranglerを使用してファイル名を開きます-:

 Sudo su - david  -c "open -a TextWrangler filename"

-eオプション-アプリケーションTextEditを使用してmyfilenameを開きます-:

Sudo su - user  -c "open -e myfilename"
0
suspectus