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

15

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 et al?

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.

Ho provato

$ su Bob
$ open -a Firefox

Ma senza alcun effetto apparente; è un dato di fatto che il monitor di attività mostra che il processo di Firefox viene eseguito da Alice-not Bob.

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

    
posta Jari Keinänen 24.09.2011 - 20:35
fonte

4 risposte

14

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 raccomando)

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

(... o il precedente in una riga:)

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

In passato, il modo più semplice per i Mac PPC era utilizzare Pseudo , ma è stato lungo < a href="https://www.macupdate.com/app/mac/5620/pseudo"> fuori produzione . Questo è per rilasciare l'icona dell'applicazione sulla icona o finestra di Pseudo.

    
risposta data 24.09.2011 - 21:06
fonte
3

Vedi il link sul perché su non funziona per tutte le applicazioni.

launchd's bsexec

Le versioni recenti di launchd hanno la capacità di avviare le applicazioni all'interno della sessione di un altro utente; anche se gli ingegneri Apple non ne hanno raccomandato l'uso generale.

Utilizza l'opzione bsexec 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 è scrivere un ticket di lavoro launchd e riavviare il Mac, oppure chiedere all'utente di disconnettersi e rientrare di nuovo.

    
risposta data 18.09.2013 - 09:50
fonte
1

Un altro metodo:

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

Grazie a wysota a: link

(Ho passato molto tempo a cercare qualcosa che funzioni nella mia particolare situazione, immaginavo che avrei diffuso la ricchezza)

    
risposta data 19.03.2015 - 04:39
fonte
0

Hai bisogno di ssh. Cioè %codice%. Come hai detto, avrai bisogno della password per l'utente. Quindi puoi fare quello che stai chiedendo. Devi abilitare l'accesso remoto in Preferenze di Sistema > Condivisione:

Quindi, puoi semplicemente fare ssh [email protected] e Firefox si aprirà come l'altro utente, non il tuo.

    
risposta data 24.09.2011 - 21:04
fonte

Leggi altre domande sui tag