2 votos

¿Cómo puedo ejecutar un comando sudo en el inicio/cierre de sesión en MacOS?

Estoy tratando de ejecutar un comando en el inicio/cierre de sesión que requiere sudo . He leído sobre LaunchDaemon y LaunchAgent pero como yo lo entiendo, LaunchDaemon ejecutará el comando en el inicio con permisos de Root, y LaunchAgent lo ejecutará al iniciar la sesión pero con los permisos del usuario actual, que no siempre será un administrador.

Alternativamente, ¿hay una manera de ejecutar mi comando sin la necesidad de sudo ? Estoy tratando de borrar todos los archivos en los directorios de inicio (Escritorio, Documentos, etc.) en el inicio y cierre de sesión del usuario, por lo que actualmente estoy usando sudo rm -rf /users/randomuser/Desktop/* etc. Similar a como funciona una cuenta de invitado, pero sin que la cuenta sea de invitado y con un poco más de control. Soy bastante nuevo en este tipo de cosas, así que por favor explíquese como si tuviera 5 años. Más que feliz de probar otra solución si es necesario. Gracias.

EDIT - Gracias por la ayuda hasta ahora. Aquí hay un poco más de detalle sobre el caso de uso:

Tengo un mac que será utilizado por mí (administrador) y algunas otras personas (segunda cuenta). No quiero que los datos persistan entre los inicios de sesión de esta segunda cuenta, de forma similar a como funciona la cuenta de invitado. El problema con la cuenta de invitado es que resetea las aplicaciones colocadas en el dock entre los inicios de sesión, así como restablece el fondo de pantalla (que me gustaría mantener igual durante todos los inicios de sesión). Mi solución fue configurar una cuenta estándar, bloquear el dock usando defaults write com.apple.Dock size-immutable -bool yes y configurar el fondo de pantalla manualmente. En cuanto a los datos, me gustaría que todos los archivos que hayan sido descargados o transferidos por el usuario sean borrados cuando el usuario cierre la sesión (o igualmente, cuando el siguiente usuario inicie la sesión). Alternativamente, si hay una forma de que la cuenta de invitado no restablezca el dock y el fondo de pantalla al cerrar la sesión, esto también funcionaría. Gracias de nuevo.

2voto

Juliano Puntos 13802

A menos que los archivos se creen con sudo el usuario puede eliminar archivos dentro de su propio perfil.

Por lo tanto, la creación de un LaunchAgent que limpie el escritorio en el momento de iniciar la sesión sería suficiente.

Inicie sesión con la cuenta que desea utilizar para los invitados.

Crea un pequeño script con el siguiente código y guárdalo como /usr/local/bin/cleanDesktop.sh .

#!/bin/bash
rm -rf /Users/$(whoami)/Desktop/* 

Hazlo ejecutable ejecutando chmod +x /usr/local/bin/cleanDesktop.sh .

Ahora crea un LaunchAgent para ejecutar tu script. Guarde el código de abajo como ~/Library/LaunchAgent/com.local.cleanDesktop.plist

y ejecutar launchctl load ~/Library/LaunchAgent/com.local.cleanDesktop.plist desde la línea de comandos.

<?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.local.cleanDesktop</string>
    <key>ProgramArguments</key>
    <array>
        <string>/usr/local/bin/cleanDesktop.sh</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
</dict>
</plist>

Advertencia este código borra cosas y no lo he probado. Así que úsalo con precaución. Además, el usuario podría borrar este código. Alternativamente, podría guardar el archivo en /Library/LaunchAgents . Entonces no será editable para los usuarios estándar. Pero se ejecutará para todos los usuarios.

-1voto

Auspexis Puntos 16

He detallado el proceso que utilicé para ejecutar un script como Root en la entrada de cualquier usuario aquí: Ocultación de carpetas por defecto a través de launchagent: no se aplica a los documentos

Me temo que no sé cómo ejecutar en el cierre de sesión sin utilizar los ganchos de cierre de sesión, que no recomendaría ya que Apple ha estado tratando de depreciar esto durante años.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X