Ejecute el comando `sudo` al inicio / arranque en Mac OS X

2

¿Cómo ejecutar una sudolínea de comando cuando se inicia Mac?

Específicamente, estoy tratando de ejecutar la siguiente línea en Mountain Lion:

sudo ipfw add 100 fwd 127.0.0.1,8080 tcp from any to any 80 in

Hay otras preguntas sobre la ejecución de herramientas de línea de comandos al inicio (como esta ), pero no abordan el problema sudoy los permisos / contraseña de administrador necesarios.

Se discuten otras Preguntas y Respuestas launchd, pero eso parece ser para procesos de demonios que deben ser observados y relanzados si se bloquean. Por el contrario, simplemente estoy tratando de hacer una única vez, ejecutar esa línea una vez al inicio.

Si las cosas han cambiado a lo largo de los años, sería bueno ejecutar un sudo al inicio tanto en versiones anteriores de Mac OS X como Mountain Lion como en versiones más recientes como Yosemite / El Capitan.

Albahaca Bourque
fuente

Respuestas:

3

aunque launchd y el término LaunchDaemon suena como demonios, es la forma preferida de automatizar debajo de todo. Apple dice en su documentación:

Los scripts de inicio y cierre de sesión son una tecnología obsoleta. En la mayoría de los casos, en su lugar, debe usar los trabajos de launchd, como se describe en Creación de demonios de lanzamiento y agentes

los scripts de inicio y cierre de sesión son scripts que deben ejecutarse una vez y luego finalizar. son activados por loginwindow.

Creo que colocar su comando en un archivo launchd plist es la forma correcta de hacerlo. primero, puede excluir a los agentes de lanzamiento, ya que se ejecutarán siempre como usuarios. porque desea que el script se ejecute como root, debe colocarlo debajo /Library/LaunchDaemons( /System/Library/LaunchDaemonstambién funcionaría pero sistema ....) y agregar el indicador RunAtLoadpero no establecerlo KeepAlive(o establecerlo en algo como bloqueado, consulte esta buena documentación ).

EDITAR porque el script se está ejecutando como root, podría omitir sudo, otra opción sería crear un script e incluirlo en /etc/sudoers( visudo) con el nopasswdindicador y ejecutarlo como usuario

Schwertspize
fuente
2

Esta pregunta tiene algunas buenas respuestas en apple.stackexchange.com .

crones probablemente el más fácil de configurar; Al usar la entrada especial @reboot /path/to/scripten el archivo crontab, su cronjob solo se ejecutará al inicio. Hay una respuesta sobre cómo hacer esto en la pregunta vinculada anteriormente.

launchdEs probablemente la solución correcta aquí. También puede usarlo para ejecutar comandos y scripts únicos. Una de las otras respuestas en la pregunta vinculada anteriormente trata sobre cómo escribir un archivo PropertyList para esto. Tenga en cuenta que el PropertyList debe colocarse debajo /Library/LaunchDaemonspara ejecutarse como root.

fredrikhl
fuente