Comment exécuter une tâche cron en tant qu'utilisateur spécifique?

15

J'ai quelques commandes à exécuter après le démarrage de la machine. Un utilisateur ne devrait pas avoir à se connecter ou quoi que ce soit pour qu'il s'exécute.

J'ai trouvé cette excellente réponse suggérant crontab avec le @rebootmot - clé, mais cela fonctionnera en tant que root, et je voudrais exécuter en tant qu'utilisateur spécifique créé pour ces "services" (pas les services système réels).

Quels sont les moyens d'obtenir le même effet avec un utilisateur donné?

Louis
la source
Essayez d'exécuter '$ su [nom d'utilisateur] [commande]'
LittleByBlue

Réponses:

25

Vous pouvez créer une crontab pour l'utilisateur spécifique comme ceci:

crontab -u <username> -e

Ou plus simplement, vous pouvez simplement exécuter crontab -elorsque vous êtes connecté en tant qu'utilisateur.

Alternativement, vous pouvez préfixer votre commande dans votre crontab (racine) avec sudo -u <username>pour exécuter la commande en tant qu'utilisateur spécifié.

kraxor
la source
Merci, je n'ai pas pu le faire fonctionner avec ceux-ci. Mais je vois maintenant que je peux créer une crontab pour n'importe qui. Les commandes ont fini par fonctionner correctement en tant que root avec sudo. Je ne savais pas que je pouvais utiliser sudo là-bas (je m'attendais à ce qu'il échoue en attendant un mot de passe).
Louis
2
@Louis sudone nécessite pas de mot de passe lorsque vous l'appelez en tant que root. Fondamentalement, vous n'obtenez pas d'autorisations, mais vous les abandonnez.
kraxor
1
@kraxor - vous pouvez simplement exécuter crontab -e lorsque vous êtes connecté en tant qu'utilisateur. je pense que ce n'est pas correct.
bhv