21 votos

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

¿Hay alguna manera de iniciar una aplicación como otro usuario para que la aplicación iniciada utilice las preferencias/historia/recursos del otro usuario, etc.?

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

He intentado

$ su Bob
$ open -a Firefox

Pero sin efecto aparente; de hecho, el monitor de actividad muestra que el proceso de Firefox está siendo ejecutado por Alice, no por Bob.

Entiendo que necesitaré las credenciales de acceso de Bob, pero eso no es un problema.

19voto

yoliho Puntos 340

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

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

o lo mismo con su: (sin embargo esto también necesita que configures una contraseña para Root - lo cual 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 los Macs PPC era utilizar Pseudo pero hace mucho tiempo que descatalogado . Esto es para soltar el icono de la aplicación en el icono o ventana de Pseudo.

0 votos

Ah, la clave era encontrar el ejecutable de Unix. También funciona con su si se desea no sudo . Gracias.

0 votos

Hmm, al intentar ejecutar Google Chrome me sale esto: Trace/BPT trap: 5

0 votos

Cuando se utiliza el sudo enfoque obtengo fallos de inicio de sesión a pesar de que uso la contraseña correcta para el otro usuario. su funciona por otro lado (no hay contraseña para el conjunto Root)

4voto

Steve Evans Puntos 155

Ver https://apple.stackexchange.com/a/102105/1860 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.

Utilice el bsexec opción en launchctl para dirigir 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 launchd y reiniciar el Mac - o pedir al usuario que cierre la sesión y vuelva a entrar.

1voto

user2423555 Puntos 11

Un método más:

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

Gracias a wysota en : http://www.qtcentre.org/threads/4730-Linux-Bash-Run-a-command-as-another-user

(He pasado mucho tiempo buscando algo que funcione en mi situación particular, y he pensado en difundir la riqueza)

0voto

Julius Canute Puntos 26

Necesitas hacer ssh. Es decir. ssh username@123.456.00 . Como has dicho, necesitarás la contraseña del usuario. Entonces podrás hacer lo que pides. Tendrás que habilitar el inicio de sesión remoto en Preferencias del Sistema>Compartir:
Remote Login Preference
Entonces, puedes hacer open -a Firefox y Firefox se abrirá como el otro usuario, no el tuyo.

0 votos

Desgraciadamente lo consigo: LSOpenURLsWithRole() failed for the application /Applications/Firefox.app with error -10810. al intentar open -a Firefox :-|

0 votos

@koiyu Intenta sudo open -na Firefox

0 votos

Falla como en el caso anterior :-/ (también falla el uso de la ruta del ejecutable de unix, aunque de forma diferente).

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X