Perché il mio LaunchAgent restituisce ROOT come utente?

1

Ho un plist nella cartella / Library / LaunchAgent (dovrebbe essere eseguito come "utente registrato", se ho capito bene ma sembra che sia in esecuzione come root ). Lancia uno script .sh bash.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
    <dict>
        <key>Label</key>
        <string>com.user.uloginscript</string>
        <key>Program</key>
        <string>/Library/TestArea/netcall.sh</string>
        </dict>
</plist>

Lo script, per la risoluzione dei problemi, contiene le seguenti righe:

#!/bin/bash
curUser=$(id -u -n)
osascript -e 'tell app "Finder" to display dialog "'$curUser'"' 

o

#!/bin/bash
curUser=$(USER)
osascript -e 'tell app "Finder" to display dialog "'$curUser'"' 

Il risultato della finestra di messaggio è sempre:

root

Ciò significa che qualsiasi script che sto cercando di fare ha problemi. Qualcuno può far luce sul perché questo sta accadendo. Lo script viene eseguito su ogni accesso, viene eseguito prima che venga visualizzato il desktop dell'utente (il messaggio viene visualizzato nella schermata di accesso).

Stranamente, se uso il seguente codice:

#!/bin/bash
osascript -e 'tell app "Finder" to display dialog "'$1'"' 

Restituisce il nome utente corretto. Sembra che lo script sia eseguito come root, ma ha passato il parametro dell'utente loggato (si noti che il plist non ha parametri).

Esecuzione di Mavericks 10.9.5

    
posta MrBeatnik 18.06.2015 - 17:20
fonte

2 risposte

0

Era presente un LoginHook. Loginhooks funziona come root e stava chiamando lo stesso file. Il seguente comando ha rimosso il hook:

sudo defaults delete com.apple.loginwindow LoginHook

Grazie a tutti per il vostro tempo e scuse per la caccia all'oca selvaggia. sapevo che non era corretto.

    
risposta data 19.06.2015 - 13:16
fonte
-1

Da launchd.plist man :

UserName < string> This optional key specifies the user to run the job as. This key is only applicable when launchd is running as root.

Quindi puoi aggiungere questa chiave al tuo plist per specificare l'utente.

    
risposta data 19.06.2015 - 11:08
fonte

Leggi altre domande sui tag