¿Cómo puedo determinar el usuario que invoca en un script de instalación posterior de Apple?

2

Quiero crear un instalador .pkg de Apple donde ejecuto una secuencia de comandos posterior a la instalación después de que el instalador haya copiado los archivos. El script se ejecuta y todo funciona perfectamente, excepto que todos los comandos en el script se ejecutan como root.

La pregunta es, ¿cómo puedo determinar el ID del usuario que realmente invocó el instalador?

who -m

devuelve el usuario que invoca cuando ejecuto el script en la línea de comandos con sudo . Pero devuelve root cuando lo ejecuto en el instalador.

¿Hay alguna forma de obtener el "usuario real"?

¡Gracias por tu ayuda!

    
pregunta Michael Lihs 04.09.2014 - 20:31

2 respuestas

3

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

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

Descubrí que la variable de entorno $HOME del usuario que instala el paquete se pasa, incluso después de elevar para Installer.app o usar el comando installer .

Las respuestas anteriores están asumiendo algunas cosas sobre el entorno que pueden no ser siempre ciertas.

Por ejemplo, CONSOLE_USER=$(ps aux | grep console | grep -v grep | cut -d' ' -f1) no funciona porque hay varios usuarios registrados, como puede ser el caso en un entorno de laboratorio de computación.

En cuanto a ps aux | grep "CoreServices/Installer" | grep -v grep | awk '{print $1;}' ; esto solo funciona si el usuario está ejecutando Installer.app y no se aplicaría a alguien que lo ejecute con el comando installer en un shell.

    
respondido por el n8felton 09.03.2016 - 04:20
1

Puede determinar quién es el propietario de la "consola" e invocar el comando sudo -u .

Algo como esto:

CONSOLE_USER=$(ps aux | grep console | grep -v grep | cut -d' ' -f1)
sudo -u $CONSOLE_USER COMMAND_TO_EXECUTE
    
respondido por el Mateusz Szlosek 04.09.2014 - 20:38

Lea otras preguntas en las etiquetas