3 votos

Equivalente de AppleScript "with administrator privileges" en shell

Recientemente tuve que hacer algunos cambios en mi Macbook que requirieron no solo privilegios de sudo sino también privilegios de root. Cuando busqué cómo hacer esto, la respuesta que parecía más apropiada para mí era ejecutar los comandos que necesitaba ejecutar con privilegios de root en AppleScript usando "with administrator privileges" después del script de shell que quería ejecutar. Esto logró lo que necesitaba hacer, pero en general preferiría no tener que usar AppleScript cuando quiero ejecutar algunos comandos en la terminal.

Por lo tanto, me preguntaba cuál es la versión de la terminal de "with administrator privileges" que funcionaría para mi Mac. Estoy buscando algo que me proporcione no solo privilegios de sudo sino también privilegios de root. Preferiría poder hacer esto de una manera "compatible con sh" para que funcione en zsh, bash, etc. Pero también aceptaría una solución que solo funcione con zsh (mi shell interactivo de elección) si no hay una buena solución "compatible con sh" para mí.

Entiendo que puedo ejecutar AppleScripts en la terminal usando osascript de manera similar a la solución proporcionada en Cómo abrir un script de shell en una nueva ventana de Terminal y ejecutarlo con privilegios de administrador pero esperaba una solución más "sh pura" si fuera posible.

1voto

Oskar Puntos 1242

Apple nunca tuvo el modelo de seguridad de scripts de administrador de Windows, por lo que hay menos efectividad del comando similar en mi experiencia. Tu investigación fue buena, pero el efecto es decepcionante.

Dado que la defensa de Unix y Apple es por capas y más sobre listas de control de acceso, es posible que debas atacar cada problema específico y aplicar el usuario o cambio necesario. En lugar de la política de grupo y "como administrador", Apple implementó comandos MDM y el concepto de un sistema administrado.

Sin embargo, si tienes suerte, tu problema puede ser susceptible a "como administrador". La documentación oficial más clara ya no se mantiene en la ejecución de un script de shell como administrador.

  • do shell script "comando" con privilegios de administrador

    do shell script "comando" con privilegios de administrador

Para una experiencia pura de shell, sudo en todo su esplendor es el camino a seguir, ya que funciona con todos los shells. El único inconveniente sería las conexiones de Objective-C y la capacidad de scripts GUI nativos que Automator y AppleScript permiten.

1voto

Nate Puntos 220

sudo es el equivalente en la línea de comandos de with administrator privileges en AppleScript. Es decir, cuando ejecutas sudo somecommand, entonces somecommand se ejecutará como root. Aquí tienes una demostración rápida:

$ sudo whoami
Contraseña: [Aquí ingresé mi contraseña]
root

Sin embargo, debes tener en cuenta que sudo solo ejecuta el comando real como root, no cosas como redirecciones. Entonces, si usas algo como esto:

sudo somecommand outputfile

... la apertura de inputfile y outputfile será realizada por tu shell actual, como usuario actual, antes de que se ejecute sudo y el comando. Hay formas estándar de evitar esto, como ejecutar un shell root para hacer las redirecciones y ejecutar el comando:

sudo sh -c 'somecommand outputfile'

(Advertencia: si el comando que deseas ejecutar contiene comillas simples y/o variables de shell, las cosas son más complicadas). Otro truco estándar es usar sudo cat para leer archivos como root y/o sudo tee para escribir archivos como root:

sudo cat inputfile | somecommand | sudo tee outputfile >/dev/null

(Ten en cuenta que en este ejemplo, cat y tee se ejecutan como root, pero somecommand se ejecuta como tu usuario normal.)

También puedes usar sudo -s para abrir un shell interactivo como root, y luego ejecutar un montón de comandos como root (y luego usar exit para cerrar ese shell y volver a la normalidad). Pero ten cuidado al ejecutar como root; es bastante fácil hacer un completo desastre si no sabes exactamente lo que estás haciendo.

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