1 votos

Uso del comando sudo en shell script en la aplicación Automator?

Estoy planeando hacer una pequeña aplicación Automator para convertir estos comandos en algo que pueda ejecutar regularmente:

rm -rf ~/Library/Caches/*
rm -rf ~/Library/Saved\ Application\ State/*
sudo rm -rf /Library/Caches/*
sudo rm -rf /System/Library/Caches/*
atsutil databases -removeUser
sudo atsutil databases -remove
sudo atsutil server -shutdown
sudo atsutil server -ping
sudo rm -rf /var/folders/*

Dado que implica sudo, que entiendo es un comando peligroso, ¿es esto recomendable para alguien nuevo en Automator, y no dañará el Mac?

He probado el comando sugerido en El iMac no se apaga desde la actualización a OS X 10.11, El Capitan para solucionar problemas con el apagado de mi Mac (es MacOS Sierra 10.12.6 en un viejo Mac Mini).

Agradecería cualquier consejo al respecto, ya que conozco lo básico de Automator, sólo si es recomendable hacerlo con comandos sudo como aplicación de Automator.

0 votos

¿Hacer un shell script en su lugar, que también pregunte y/n antes de hacer cosas?

1voto

Ted Wrigley Puntos 101

El sudo no es (en sí mismo) peligroso. Sudo simplemente elimina las restricciones de protección, poniendo sobre ti la carga de ejecutar código seguro, en lugar de protegerte entre bastidores. Sudo puede ser peligroso cuando, por ejemplo:

  • Cometes un error de codificación que tiene consecuencias imprevistas: por ejemplo, si pretendes ejecutar:

    • sudo rm -Rf /Users/yourname/something/something/

      pero en vez de eso teclea:

    • sudo rm -Rf /Users/yourname/ something/something/

      (con un espacio accidental después de 'yourname')

    el segundo script (con el espacio erróneo) borrará todos los datos del usuario <su_nombre> sin previo aviso.

  • Ejecutas el código de otra persona que resulta ser malicioso. El código malicioso ejecutado sin sudo puede hacer algún daño, pero el código malicioso ejecutado con sudo puede comprometer su sistema por completo.

Mientras tengas cuidado, sudo es suficientemente seguro. Sólo sé consciente de los potenciales daños.

0 votos

Yo diría que lo que has descrito es "peligroso". Estar en lo alto de un acantilado es "peligroso", pero eso no significa que sea "perjudicial"; sólo significa que hay que ser precavido. Y si eres precavido, no debes dejar que el peligro te impida disfrutar de las vistas.

0 votos

@Wowfunhappy - Eh, tomayto-tomahto. Entiendo tu punto de vista, aunque parece mera semántica.

1voto

Douglas Puntos 10417

sudo Ser peligroso

No hay comandos peligrosos, per se. Es lo que haces con ellos lo que puede causar problemas. Por ejemplo, el inofensivo comando yes que mostrará una cadena de texto repetidamente hasta que lo elimines, puede ser utilizado nefastamente para paralizar una máquina:

echo "Spawning 1000 yesses"
for i in {1..1000} ;
do
  ( /usr/bin/yes & )
; done

No hay nada peligroso. El problema es cómo se utiliza.

sudo no da ni quita permisos/restricciones en tu cuenta. Permite ejecutar un comando como otro usuario. Este suele ser el superusuario (también conocido como Root), por lo que el comando - su "do" ( su = Identidad de usuario sustituta )

La clave para recordar es que cuando se emite un comando con el prefijo sudo lo estás ejecutando como Root y no como "tú".

Arreglando tu script

He aquí algunos consejos...

  • Ejecute el propio script (no los comandos individuales) con sudo .

  • Antes de ejecutar la "carne" del script, comprueba primero si tienes privilegios de Root:

    # Validates that user is root; exits if not
    echo "Checking Root Priviliges"
    if [ $(id -u) -ne 0 ]
    then 
      echo "User is not root"
      exit 1;
    else 
      echo "User is root.  Continuing";
    fi
  • No utilice la expansión tilde (~) para su ruta. Utiliza la ruta completa. Esto asegurará que está afectando al directorio que desea afectar. El directorio root para usted es muy diferente del directorio root.

    rm -rf ~/Library/Caches/*                   Don't do this!!!
    rm -rf /Users/FooBarUser/Library/Caches/*   Do this instead!
  • Si planeas automatizar esto (parece que sí), necesitarás guardarlo como un script (bash o zsh) y luego sugiero usar launchd y no Automator para esto. Ver el post launchd plist formato para ejecutar un comando a una hora específica en un día de la semana para saber cómo hacerlo.

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