Ejecutar script como root al inicio - macOS 10.12 Sierra

4

Lo he intentado todo y parece que no puedo ejecutar mi script al inicio. La modificación de .bashrc, .bash_profile, etc. esa ruta no me llevó a ninguna parte. Entonces intenté los trabajos de cron, sin suerte. Luego he estado tirando de mi pelo tratando de usar la función launchd. Hice un demonio de lanzamiento, que supuestamente son las funciones de raíz, pero eso tampoco es una suerte. Como último intento, incluso probé Automator sin suerte.

El archivo que quiero ejecutar como root es: "/Users/CURRENT_USER/Dev/my_script.sh"

Aquí está lo que tengo en mi carpeta LaunchDaemons:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>com.startup.script</string>
    <key>LaunchOnlyOnce</key>
    <true/>
    <key>ProgramArguments</key>
    <array>
        <string>sh</string>
        <string>-c</string>
        <string>/Users/CURRENT_USER/Dev/my_script.sh</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
    <key>UserName</key>
    <string>root</string>
</dict>
</plist>
    
pregunta TekBoi 08.07.2017 - 22:15

1 respuesta

3

A ~ / Library / LaunchDaemons no existe. Un daemon de inicio en / Library / LaunchDaemons ya se ejecuta con privilegios de raíz, por lo que puede omitir la parte UserName.

Así que ponga su script de shell my_script.sh en / usr / local / bin / o en / usr / bin / (ajuste la ruta en la matriz ProgramArguments si usa esta última), haga que sea ejecutable con sudo chmod +x ... y pertenezca por root: rueda con sudo chown root:wheel ... . Se recomienda / usr / bin si se instala brew.

Modifique su lista actual para:

<?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.startup.script</string>
    <key>LaunchOnlyOnce</key>
    <true/>
    <key>ProgramArguments</key>
    <array>
        <string>sh</string>
        <string>-c</string>
        <string>/usr/local/bin/my_script.sh</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
</dict>
</plist>

Guarde el daemon de inicio como com.startup.script.plist en / Library / LaunchDaemons / y es propiedad de root: wheel.

Inicia con:

sudo launchctl load /Library/LaunchDaemons/com.startup.script.plist
    
respondido por el klanomath 09.07.2017 - 01:30

Lea otras preguntas en las etiquetas