No voy a entender cuánto es una mala idea; En pocas palabras, ejecutar sudoen 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 sudoen el crontab, si está modificando el crontab de la raíz.
Usa el crontab de root
Ejecute el siguiente comando:
sudo crontab -e
Esto abre el rootcrontab. sudoNo es necesario ejecutar su comando en este contexto, ya que se invocará como de roottodos 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.
Me alegro de que funcione! Solo tenga cuidado con los agujeros de seguridad que deje atrás. Podrían volver más tarde para perseguirlo.
SirCharlo
1
@SirCharlo ¿Por qué usar rootel crontab de usuario en lugar del crontab de todo el sistema /etc/crontab?
Eliah Kagan
1
@Elijah, ¿por qué no?
SirCharlo
2
Esta respuesta pierde la marca porque pasa por alto las sutilezas disponibles en su sudoersarchivo, como los grupos de sudo sin un requisito de contraseña.
brent
punto muy muy útil, gracias por la gran ayuda.
Nasser Mansouri
33
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.
También colocaría el comando en /etc/cron.hourly/something. Para eso están estos directorios.
John S Gruber
3
No. Podrías ponerlo en /etc/cron.SOMETHING/SCRIPT, pero no haría las dos cosas. Ambos darían aproximadamente la misma función, aunque usando crontab tendrías un poco más de poder sobre la frecuencia / cuándo se ejecutan las cosas.
tgm4883
1
Debería haber dejado claro que lo dije como una alternativa. Gracias.
John S Gruber el
3
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.
Hmm ... Entonces, cualquier comando malicioso, como sudo rm -rf 'slash'( no ejecute ese comando ), ejecutado desde ese usuario, no requerirá contraseña ... No sé, se siente inseguro, ¿no?
SirCharlo
Ya lo se. Tu enfoque es bueno. Pero estoy usando el enfoque anterior para otorgar derechos a otro usuario para detener / iniciar ciertos servicios.
Vidyadhar
24
Esta es una idea extremadamente mala. Por favor no hagas esto.
bkanuka
2
Quizás vidyadhar ALL= NOPASSWD: /bin/rm somefilesería más seguro.
Wernfried Domscheit
Esta es una idea terrible. Le diste permisos generales de sudo a rm. En su lugar, otorgue permisos sudo a un script su comando, incluyendo rm u otros en ese script, hágalo ejecutable, luego otorgue permisos sudo a ese script. <username> ALL=(ALL) NOPASSWD: /home/<username>/bin/<script>, lo que sería mucho más seguro.
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.Usa el crontab de root
Ejecute el siguiente comando:
Esto abre el
root
crontab.sudo
No es necesario ejecutar su comando en este contexto, ya que se invocará como deroot
todos modos.Por lo tanto, simplemente agregaría lo siguiente al crontab de root.
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í:
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.
fuente
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.
fuente
Ejecute el siguiente comando en la terminal
Se agregó la siguiente línea al final del archivo:
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.
fuente
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.