Kann ich eine Anwendung als ein anderer Benutzer starten, ohne tatsächlich den Benutzer zu wechseln?

Gibt es eine Möglichkeit, eine Anwendung als ein anderer Benutzer zu starten, sodass die gestartete Anwendung die Einstellungen / den Verlauf / die Ressourcen des anderen Benutzers usw. verwendet?

Beispiel: Ich habe mich als Alice angemeldet und möchte Firefox als Bob starten, daher würde Firefox den Browserverlauf von Bob anstelle von Alice anzeigen.

Ich habe es versucht

$ su Bob
$ open -a Firefox

Aber ohne offensichtliche Wirkung; Tatsache ist, dass der Aktivitätsmonitor zeigt, dass der Firefox-Prozess von Alice ausgeführt wird – nicht von Bob.

Ich verstehe, dass ich Bobs Zugangsdaten benötige, aber das ist kein Problem.

Antworten (4)

Von der Befehlszeile aus müssen Sie die ausführbare Unix-Datei finden und mit sudo wie folgt ausführen:

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

… oder das gleiche mit su: (allerdings müssen Sie auch ein Passwort für root einrichten - was ich nicht empfehle)

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

(…oder das obige in einer Zeile:)

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

In der Vergangenheit war der einfachste Weg für PPC-Macs die Verwendung von Pseudo , aber es wurde lange eingestellt . Dadurch wird das Anwendungssymbol auf dem Symbol oder Fenster von Pseudo abgelegt.

Ah, der Schlüssel war, die ausführbare Unix-Datei zu finden. Es funktioniert auch mit su, wenn man es nicht möchte sudo. Vielen Dank!
Hmm, wenn ich versuche, Google Chrome auszuführen, erhalte ich Folgendes:Trace/BPT trap: 5
Bei der Verwendung des sudoAnsatzes erhalte ich Anmeldefehler, obwohl ich das richtige Passwort für den anderen Benutzer verwende. sufunktioniert dagegen (kein Passwort für Root-Set)
@lapplandscohan sudo nimmt das Passwort des aktuellen Benutzers
Umwerfend. Wirklich erstaunlich. Beachten Sie, dass macOS die gemeinsame Nutzung der Zwischenablage zwischen der Anwendung, die als ein anderer Benutzer ausgeführt wird, und dem Hauptbenutzer nicht zulässt.
@evan.bovie YTes zeigt, dass sie an Sicherheit gedacht haben

Unter https://apple.stackexchange.com/a/102105/1860 erfahren Sie , warum sudies nicht für alle Anwendungen funktioniert.

launchds bsexec

Neuere Versionen von launchdhaben die Fähigkeit, Anwendungen innerhalb der Sitzung eines anderen Benutzers zu starten; obwohl Apple-Ingenieure seine allgemeine Verwendung nicht empfohlen haben.

Verwenden Sie die bsexecOption in launchctl , um auf die entsprechende Benutzersitzung abzuzielen:

 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.

Der empfohlene Ansatz besteht darin, ein launchd-Jobticket zu schreiben und den Mac neu zu starten – oder den Benutzer zu bitten, sich abzumelden und wieder anzumelden.

Noch eine Methode:

# chown someuser command
# chmod u+s command
$ ./command

Danke an wysota unter: http://www.qtcentre.org/threads/4730-Linux-Bash-Run-a-command-as-another-user

(Ich habe viel Zeit damit verbracht, nach etwas zu suchen, das in meiner speziellen Situation funktioniert, und dachte, ich würde den Reichtum verteilen.)

Sie müssen ssh. Dh ssh username@123.456.00. Wie Sie sagten, benötigen Sie das Kennwort für den Benutzer. Dann können Sie tun, worum Sie bitten. Sie müssen die Remote-Anmeldung unter Systemeinstellungen>Freigabe aktivieren:
Remote-Login-Präferenz
Dann können Sie es einfach tun open -a Firefoxund Firefox wird als der andere Benutzer geöffnet, nicht Ihrer.

Leider bekomme ich: LSOpenURLsWithRole() failed for the application /Applications/Firefox.app with error -10810.beim Versuch open -a Firefox:-|
@koiyu Versuchsudo open -na Firefox
es schlägt wie oben fehl :-/ (auch die Verwendung des Pfads zur ausführbaren Unix-Datei schlägt fehl, wenn auch anders.)
@koiyu Berechtigungen? Was ls -lsagt für Firefox?
Von einer SSH-Sitzung gestartete Prozesse haben keinen Zugriff auf die GUI. Wenn dies auf Ihrem System funktioniert, vermute ich, dass Sie irgendwann eine Low-Level-Konfiguration geändert haben.
Das würde also in meinem Fall nicht funktionieren; aber für jemanden, der die GUI der App nicht benötigt, könnte dies eine praktikable Alternative sein :-)
@koiyu: Die sudoin der anderen Antwort erwähnte Option (mit dem Pfad zur ausführbaren Datei) funktioniert zumindest unter Lion.
@patrix, ja, das liegt daran, dass es kein SSH verwendet. (Auch weil es funktioniert, hatte ich die Antwort akzeptiert.)
@Tobias Nein. Hat nichts geändert. Einfach SSH-in dann open -a <application>und es öffnet die GUI der Anwendung.
@daviesgeek, aber hast du SSH in einen anderen Benutzer als den, der derzeit die GUI hat, wie das OP wollte.