Je ne vais pas entrer dans combien c'est une mauvaise idée; Pour faire simple, exécuter Sudo
in dans crontab nécessite que votre mot de passe soit stocké quelque part en texte brut.
C'est une mauvaise idée.
Voici la méthode recommandée pour exécuter des tâches administratives via cron. Puisque vous n'avez pas vraiment besoin d'écrire Sudo
dans la crontab, si vous modifiez la crontab de root.
Exécutez la commande suivante:
Sudo crontab -e
Ceci ouvre la liste des tâches de root
. Sudo
n'est pas nécessaire d'exécuter votre commande dans ce contexte, car elle sera invoquée comme root
de toute façon.
Par conséquent, vous ajouterez simplement ce qui suit au fichier crontab de root.
@hourly rm somefile
Maintenant, si vous absolument voulez prendre des risques avec votre mot de passe, ce qui suit va exécuter votre commande à partir de votre propre crontab, et entrez votre mot de passe automatiquement lorsque vous y êtes invité par Sudo
.
Encore une fois, ce n'est pas recommandé.
Dans votre propre crontab, écrivez votre commande comme suit:
@hourly echo "password" | Sudo -S rm somefile
L’inconvénient évident est que, si jamais quelqu'un accédait à votre crontab, votre mot de passe serait lisible en texte brut.
Vous ne devriez pas faire ça.
Si vous mettez le script à partir de l’un des répertoires cron (/etc/cron.*
), vous n’avez pas besoin d’utiliser Sudo car il s’exécute en tant que root.
Si vous utilisez crontab, vous voudrez utiliser crontab de root. Cela l'exécutera en tant que root et n'aura pas besoin de Sudo.
Sudo crontab -e
Exécuter la commande suivante dans le terminal
Sudo visudo
Ajout de la ligne suivante à la fin du fichier:
vidyadhar ALL= NOPASSWD: /bin/rm
Dans l'exemple ci-dessus, vidyadhar est le nom d'utilisateur et il ne vous demandera pas de mot de passe si vous exécutez la commande rm via vidyadhar.