¿Puedo iniciar una aplicación como otro usuario sin cambiar de usuario?

15

¿Hay alguna forma de iniciar una aplicación como otro usuario para que la aplicación iniciada utilice las preferencias / historial / recursos del otro usuario?

Por ejemplo: he iniciado sesión como Alice y me gustaría iniciar Firefox como Bob, por lo tanto, Firefox mostraría el historial de navegación de Bob en lugar del de Alice.

Lo intenté

$ su Bob
$ open -a Firefox

Pero sin efecto aparente; Al parecer, el Monitor de actividad muestra que Alice está ejecutando el proceso de Firefox, no Bob.

Entiendo que necesitaré las credenciales de inicio de sesión de Bob, pero eso no es un problema.

    
pregunta Jari Keinänen 24.09.2011 - 20:35

4 respuestas

14

Desde la línea de comandos tienes que encontrar el ejecutable de Unix y ejecutarlo usando sudo así:

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

... o lo mismo que con su: (sin embargo, esto también necesita que configures una contraseña para root, que no recomiendo)

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

(... o lo anterior en una línea :)

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

En el pasado, la forma más fácil para PPC Mac era utilizar Pseudo , pero ha sido largo < a href="https://www.macupdate.com/app/mac/5620/pseudo"> descontinuado . Esto es para colocar el ícono de la aplicación en el ícono o la ventana de Pseudo.

    
respondido por el Mark 24.09.2011 - 21:06
3

Consulte enlace para ver por qué su no funciona para todas las aplicaciones.

bsexec de launchd

Las versiones recientes de launchd tienen la capacidad de lanzar aplicaciones dentro de la sesión de otro usuario; aunque los ingenieros de Apple no han recomendado su uso general.

Use la opción bsexec en launchctl para apuntar a la sesión de usuario apropiada:

 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.

El enfoque recomendado es escribir un ticket de trabajo de launchd y reiniciar la Mac, o pedirle al usuario que cierre la sesión y vuelva a iniciarla.

    
respondido por el Graham Miln 18.09.2013 - 09:50
1

Un método más:

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

Gracias a wysota en: enlace

(Pasé mucho tiempo buscando algo que funcionara en mi situación particular, pensé que habría extendido la riqueza)

    
respondido por el user2423555 19.03.2015 - 04:39
0

Necesitas ssh. Es decir. %código%. Como dijiste, necesitarás la contraseña para el usuario. Entonces puedes hacer lo que estás pidiendo. Deberá habilitar el inicio de sesión remoto en Preferencias del sistema > Compartir:

Luego, solo puedes hacer ssh [email protected] y Firefox se abrirá como el otro usuario, no el tuyo.

    
respondido por el daviesgeek 24.09.2011 - 21:04

Lea otras preguntas en las etiquetas