¿Por qué mi LaunchAgent devuelve ROOT como usuario?

1

Tengo un plist en la carpeta / Library / LaunchAgent (esto debería ejecutarse como "usuario registrado", si entiendo correctamente pero parece estar ejecutándose como root ). Lanza un 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>

El script, para solucionar problemas, contiene las siguientes líneas:

#!/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'"' 

El resultado del cuadro de mensaje es siempre:

  

raíz

Esto significa que cualquier secuencia de comandos que estoy tratando de hacer tiene problemas. ¿Alguien puede arrojar alguna luz sobre por qué sucede esto? El script se ejecuta en cada inicio de sesión, se ejecuta antes de que aparezca el escritorio del usuario (el mensaje aparece en la pantalla de inicio de sesión).

Curiosamente, si uso el siguiente código:

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

Devuelve el nombre de usuario correcto. Parece que el script se ejecuta como root, pero ha pasado el parámetro del usuario que ha iniciado sesión (tenga en cuenta que el plist no tiene parámetros).

Ejecutando Mavericks 10.9.5

    
pregunta MrBeatnik 18.06.2015 - 17:20

2 respuestas

0

Un LoginHook estaba presente. Loginhooks se ejecuta como root y estaba llamando al mismo archivo. El siguiente comando eliminó el gancho:

sudo defaults delete com.apple.loginwindow LoginHook

Gracias a todos por su tiempo, y disculpas por la persecución salvaje. Yo sabía que no era correcto.

    
respondido por el MrBeatnik 19.06.2015 - 13:16
-1

Desde launchd.plist man :

  

Nombre de usuario < cadena >        Esta clave opcional especifica el usuario para ejecutar el trabajo como. Esta clave solo es aplicable cuando launchd es        ejecutándose como root.

Por lo tanto, puede agregar esta clave a su lista para especificar el usuario.

    
respondido por el Mateusz Szlosek 19.06.2015 - 11:08

Lea otras preguntas en las etiquetas