Respuestas:
No voy a entender cuánto es una mala idea; En pocas palabras, ejecutar sudo
en crontab requiere que su contraseña se almacene en algún lugar en texto sin formato.
Es una mala idea.
El siguiente es el método preferido para ejecutar tareas administrativas a través de cron. Dado que realmente no necesita escribir sudo
en el crontab, si está modificando el crontab de la raíz.
Ejecute el siguiente comando:
sudo crontab -e
Esto abre el root
crontab. sudo
No es necesario ejecutar su comando en este contexto, ya que se invocará como de root
todos modos.
Por lo tanto, simplemente agregaría lo siguiente al crontab de root.
@hourly rm somefile
Ahora, si usted absolutamente quiere ser inseguro y correr riesgos con su contraseña, lo siguiente será ejecutar el comando desde el propio crontab, e introduzca la contraseña automáticamente cuando lo solicite sudo
.
De nuevo, esto no es recomendable .
En su propio crontab, escriba su comando así:
@hourly echo "password" | sudo -S rm somefile
La desventaja obvia aquí es que, si alguien alguna vez accede a su crontab, su contraseña será legible en texto sin formato.
No deberías hacer esto.
root
el crontab de usuario en lugar del crontab de todo el sistema /etc/crontab
?
sudoers
archivo, como los grupos de sudo sin un requisito de contraseña.
Si está colocando el script desde uno de los directorios cron ( /etc/cron.*
), entonces no necesita usar sudo ya que se está ejecutando como root.
Si está usando crontab, entonces querrá usar crontab de root. Esto lo ejecutará como root y tampoco necesitará sudo.
sudo crontab -e
Ejecute el siguiente comando en la terminal
sudo visudo
Se agregó la siguiente línea al final del archivo:
vidyadhar ALL= NOPASSWD: /bin/rm
En el ejemplo anterior, vidyadhar es el nombre de usuario y no le pedirá contraseña si está ejecutando el comando rm a través de vidyadhar.
sudo rm -rf 'slash'
( no ejecute ese comando ), ejecutado desde ese usuario, no requerirá contraseña ... No sé, se siente inseguro, ¿no?
vidyadhar ALL= NOPASSWD: /bin/rm somefile
sería más seguro.
<username> ALL=(ALL) NOPASSWD: /home/<username>/bin/<script>
, lo que sería mucho más seguro.