Come posso determinare l'utente che invoca uno script postinstall del programma di installazione Apple

2

Voglio creare un programma di installazione di apple .pkg su cui eseguo uno script postinstall dopo che i file sono stati copiati dal programma di installazione. Lo script viene eseguito e tutto funziona perfettamente, tranne che tutti i comandi nello script vengono eseguiti come root.

La domanda è, come posso determinare l'id dell'utente che ha effettivamente invocato il programma di installazione.

who -m

restituisce l'utente che invoca quando eseguo lo script sulla riga di comando con sudo . Ma restituisce root quando lo eseguo nel programma di installazione.

C'è un modo per ottenere "l'utente effettivo"?

Grazie per il tuo aiuto!

    
posta Michael Lihs 04.09.2014 - 20:31
fonte

2 risposte

3

Dopo alcuni test, credo di aver trovato che una delle migliori opzioni per questo è

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

Ho rilevato che la variabile ambientale $HOME dell'utente che installa il pacchetto viene passata, anche dopo aver aumentato per Installer.app o utilizzando il comando installer .

Le risposte precedenti presumono alcune cose sull'ambiente che potrebbero non essere sempre vere.

Ad esempio CONSOLE_USER=$(ps aux | grep console | grep -v grep | cut -d' ' -f1) non funziona, ci sono più utenti che hanno effettuato l'accesso, come potrebbe essere il caso in un ambiente di laboratorio informatico.

Come per ps aux | grep "CoreServices/Installer" | grep -v grep | awk '{print $1;}' ; funziona solo se l'utente sta effettivamente eseguendo Installer.app e non si applica a qualcuno che lo esegue con il comando installer in una shell.

    
risposta data 09.03.2016 - 04:20
fonte
1

Puoi determinare chi è il proprietario della "console" e invocare il comando sudo -u .

Qualcosa del genere:

CONSOLE_USER=$(ps aux | grep console | grep -v grep | cut -d' ' -f1)
sudo -u $CONSOLE_USER COMMAND_TO_EXECUTE
    
risposta data 04.09.2014 - 20:38
fonte

Leggi altre domande sui tag