Posso avviare un'applicazione come un altro utente senza realmente cambiare utente?


17

C'è un modo per avviare un'applicazione come un altro utente in modo che l'applicazione avviata utilizzi le preferenze / cronologia / risorse dell'altro utente e così via?

Ad esempio: ho effettuato l'accesso come Alice e vorrei avviare Firefox come Bob, quindi Firefox mostrerebbe la cronologia di navigazione di Bob invece di quella di Alice.

Provai

$ su Bob
$ open -a Firefox

Ma senza alcun effetto apparente; infatti Activity Monitor mostra che il processo di Firefox è gestito da Alice, non da Bob.

Capisco che avrò bisogno delle credenziali di accesso di Bob, ma non è un problema.

Risposte:


16

Dalla riga di comando devi trovare l'eseguibile Unix ed eseguirlo usando sudo in questo modo:

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

... o lo stesso con su: (tuttavia questo richiede anche che tu imposti una password per root - che non consiglio)

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

(... o quanto sopra in una riga :)

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

In passato, il modo più semplice per i Mac PPC era usare Pseudo , ma è stato a lungo sospeso . Questo serve a rilasciare l'icona dell'applicazione sull'icona o sulla finestra di Pseudo.


Ah, la chiave era trovare l'eseguibile Unix. Funziona anche con suse si desidera non farlo sudo. Grazie!
Jari Keinänen,

Hmm, quando provo a eseguire Google Chrome ottengo questo:Trace/BPT trap: 5
Wojciech Bednarski il

Quando utilizzo l' sudoapproccio ottengo errori di accesso anche se utilizzo la password corretta per l'altro utente. sufunziona d'altra parte (nessuna password per il root set)
LapplandsCohan

@lapplandscohan sudo prende la password dell'utente corrente
user151019

1
@ evan.bovie YTes mostra che hanno pensato alla sicurezza
user151019

4

Vedi /apple//a/102105/1860 per il motivo per cui sunon funziona per tutte le applicazioni.

launchd's bsexec

Le versioni recenti di launchdhanno la possibilità di avviare le applicazioni all'interno della sessione di un altro utente; sebbene gli ingegneri Apple non ne abbiano raccomandato l'uso generale.

Utilizzare l' bsexecopzione in launchctl per indirizzare la sessione utente appropriata:

 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.

L'approccio consigliato è quello di scrivere un job ticket di avvio e riavviare il Mac o chiedere all'utente di disconnettersi e riconnettersi.



0

Devi ssh. Vale a dire ssh username@123.456.00. Come hai detto, avrai bisogno della password per l'utente. Quindi puoi fare quello che stai chiedendo. Dovrai abilitare l'accesso remoto in Preferenze di Sistema> Condivisione:
Preferenza di accesso remoto
Quindi, puoi semplicemente farlo open -a Firefoxe Firefox si aprirà come l'altro utente, non tuo.


Purtroppo ottengo: LSOpenURLsWithRole() failed for the application /Applications/Firefox.app with error -10810.quando provo open -a Firefox: - |
Jari Keinänen,

@koiyu Trysudo open -na Firefox
daviesgeek

fallisce come sopra: - / (anche usando il percorso dell'eseguibile unix fallisce, anche se diversamente.)
Jari Keinänen

1
I processi avviati da una sessione SSH non hanno accesso alla GUI. Se questo funziona sul tuo sistema, sospetto che ad un certo punto tu abbia cambiato qualche configurazione di basso livello.
Tobias,

1
@daviesgeek ma hai inserito SSH in un utente diverso da quello che attualmente ha la GUI, come voleva l'OP.
Tobias,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.