Kann ich eine Anwendung als anderer Benutzer starten, ohne den Benutzer zu wechseln?


17

Gibt es eine Möglichkeit, eine Anwendung als 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 sichtbare Wirkung; Tatsache ist, dass Activity Monitor anzeigt, dass der Firefox-Prozess von Alice und nicht von Bob ausgeführt wird.

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

Antworten:


16

Von der Kommandozeile aus müssen Sie die Unix-Programmdatei finden und sie mit sudo wie folgt ausführen :

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

... oder dasselbe 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 bestand die einfachste Möglichkeit für PPC-Macs darin, Pseudo zu verwenden , wurde jedoch schon lange eingestellt . Hiermit legen Sie das Anwendungssymbol auf dem Pseudo-Symbol oder -Fenster ab.


Ah, der Schlüssel war, die ausführbare Unix-Datei zu finden. Es funktioniert auch mit, suwenn man nicht möchte sudo. Vielen Dank!
Jari Keinänen

Hmm, beim Versuch, Google Chrome auszuführen, erhalte ich Folgendes:Trace/BPT trap: 5
Wojciech Bednarski

Bei Verwendung des sudoAnsatzes erhalte ich Anmeldefehler, obwohl ich das richtige Kennwort für den anderen Benutzer verwende. sufunktioniert auf der anderen Seite (kein Passwort für Root-Set)
LapplandsCohan

@lapplandscohan sudo übernimmt das Passwort des aktuellen Benutzers
user151019

1
@ evan.bovie YTes zeigt, dass sie an Sicherheit gedacht haben
user151019

4

Unter /apple//a/102105/1860 erfahren Sie, warum sunicht alle Anwendungen funktionieren.

launchd's bsexec

Neuere Versionen von launchdhaben die Möglichkeit, Anwendungen innerhalb der Sitzung eines anderen Benutzers zu starten. Obwohl Apple-Ingenieure die allgemeine Verwendung nicht empfohlen haben.

Verwenden Sie die bsexecOption in launchctl , um die entsprechende Benutzersitzung auszuwählen :

 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 Start-Job-Ticket zu erstellen und den Mac neu zu starten - oder den Benutzer aufzufordern, sich abzumelden und wieder anzumelden.



0

Sie müssen ssh. D. h ssh username@123.456.00. Wie Sie sagten, benötigen Sie das Passwort für den Benutzer. Dann können Sie tun, was Sie verlangen. Sie müssen die Remote-Anmeldung unter Systemeinstellungen> Freigabe aktivieren:
Remote-Login-Einstellungen
Dann können Sie dies einfach tun open -a Firefoxund Firefox wird als der andere Benutzer geöffnet, nicht als Ihr Benutzer.


Leider bekomme ich LSOpenURLsWithRole() failed for the application /Applications/Firefox.app with error -10810.beim versuchen open -a Firefox: - |
Jari Keinänen

@koiyu Trysudo open -na Firefox
daviesgeek

es schlägt fehl wie oben: - / (auch die Verwendung des Pfads zur ausführbaren Unix-Datei schlägt fehl, wenn auch anders.)
Jari Keinänen

1
Von einer SSH-Sitzung gestartete Prozesse haben keinen Zugriff auf die GUI. Wenn dies auf Ihrem System funktioniert, haben Sie vermutlich irgendwann eine Low-Level-Konfiguration geändert.
Tobias,

1
@daviesgeek hast du aber SSH in einen anderen Benutzer als den, der aktuell die GUI hat, als das OP wollte.
Tobias
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.