4 votos

¿Cómo puedo determinar la invocación de usuario en una Manzana instalador de secuencia de comandos postinstall

Quiero construir un instalador de apple .pkg donde puedo ejecutar una secuencia de comandos postinstall después de que los archivos han sido copiados por el instalador. El script se ejecuta y funciona todo perfecto, excepto que todos los comandos de la secuencia de comandos se ejecuta como root.

La pregunta es, ¿cómo puedo determinar el id del usuario que realmente invoca el instalador.

who -m

devuelve la invocación de usuario cuando se ejecute la secuencia de comandos en la línea de comandos con sudo. Pero vuelve root cuando lo ejecuto en el instalador.

Hay alguna forma de obtener el "usuario real"?

Gracias por su ayuda!

5voto

n8felton Puntos 56

Después de algunas pruebas, creo que he encontrado que una de las mejores opciones para esto es

INSTALLER_USER=$(stat -f '%Su' $HOME)

He encontrado que el $HOME variable de entorno del usuario instalar el paquete pasa a través de, incluso después de la elevación de Installer.app o el uso de la installer comando.

Las respuestas anteriores están asumiendo algunas cosas sobre el medio ambiente que no siempre puede ser cierto.

Por ejemplo CONSOLE_USER=$(ps aux | grep console | grep -v grep | cut -d' ' -f1) no trabajo en el que hay varios usuarios conectados, como puede ser el caso en un entorno de laboratorio de informática.

Como para ps aux | grep "CoreServices/Installer" | grep -v grep | awk '{print $1;}'; esto sólo funciona si el usuario está realmente funcionando Installer.app y no se aplicaría a alguien se ejecuta con el installer comando en un shell.

1voto

hjdm Puntos 18

Se puede determinar quién es dueño de la "consola" e invocar sudo -u comando.

Algo como esto:

CONSOLE_USER=$(ps aux | grep console | grep -v grep | cut -d' ' -f1)
sudo -u $CONSOLE_USER COMMAND_TO_EXECUTE

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