2009-06-18 7 views
11

J'ai besoin que ce fichier Bash s'exécute périodiquement, et il doit être en tant que root.Est-il possible de faire exécuter un fichier Bash en tant que root dans crontab?

Est-ce possible?

[[email protected] nutch-0.9]# locate crontab 
/etc/crontab 
/etc/sysconfig/crontab 
/usr/bin/crontab 
/usr/share/man/man1/crontab.1.gz 
/usr/share/man/man1p/crontab.1p.gz 
/usr/share/man/man5/crontab.5.gz 
/usr/share/vim/vim71/syntax/crontab.vim 
[[email protected] nutch-0.9]# 
+1

Vous pouvez aussi essayer de poser cette question sur serverfault. –

Répondre

18

Oui, il suffit d'ajouter aux crontab utilisateurs root; Exécutez la commande crontab -e. Les emplacements cron stocke ses fichiers peuvent être un peu bizarre, donc utilisez la commande crontab -e qui s'assurera qu'il est au bon endroit, et je crois qu'il vérifie la syntaxe.

+0

J'ai listé tous les fichiers crontab, que voulez-vous dire que je devrais modifier? – omg

+3

Au lieu de modifier vous-même directement un fichier crontab, whatsisname vous suggère d'utiliser la commande "crontab -e", qui éditera la crontab correcte. – ephemient

11

Vous pouvez juste faire

crontab -e 

en tant que root.

0

Je crois que toutes les entrées dans crontab de root s'exécutent en tant que root. Vous pouvez simplement lui faire appeler un script Bash comme action et il devrait faire ce que vous voulez.

-1

Une façon de le faire (via sudo):

  1. Vous devez configurer prilvileges sudo pour le compte de fonctionner sans entrer dans les informations d'identification utilisateur
  2. Ajouter « sudo/path/to/commande « (sans ») pour exécuter la commande en tant que root Vous pouvez également ajouter des paramètres à la commande
4

Il suffit de spécifier root que l'utilisateur pour l'entrée en /etc/crontab:..

0 0 * * * root somecommand 

Vous pouvez également ajouter la commande au crontab personnel de root en utilisant crontab -e en tant que root.

+0

Merci, BTW, pourriez-vous me dire à quoi servent les autres fichiers crontab? – omg

+1

Le fichier crontab dans/usr/bin est l'exécutable qui ouvre un éditeur si vous tapez "crontab -e". Les fichiers ci-dessous/usr/share/man sont les pages de manuel que vous obtenez en tapant "man crontab". /usr/share/vim*/sytax/crontab.vim est une coloration syntaxique spéciale pour vim (activée pour les fichiers crontab). – sth

+0

Cela n'a pas fonctionné pour moi. J'ai reçu le message/bin/sh: 1root: non trouvé – Lumbee

4

Quoi qu'il en soit, vous devrez avoir accès au compte utilisateur root.

  1. vous pouvez l'ajouter à la racine crontab, comme l'a suggéré
  2. vous pouvez utiliser sudo, comme l'a suggéré
  3. vous pouvez utiliser le bit setuid. Le problème avec le bit setuid est qu'il doit être un programme compilé. Si elle est compilée, vous pouvez "chmod 4755" et définir le propriétaire du fichier à root, et il sera exécuté en tant que root. Si ce n'est pas compilé, vous pouvez écrire un petit wrapper en C (ou tout autre langage de programmation compilé) qui appelle simplement votre script, et setuid sur le wrapper, et assurez-vous que le wrapper est la propriété de root.

Mon conseil? Utilisez la racine crontab. C'est ce qu'il y a là-bas.

En outre, il n'y a pas d'entrée d'utilisateur dans crontab comme suggéré par STH ... la syntaxe est:

# .---------------- minute (0 - 59) 
# | .------------- hour (0 - 23) 
# | | .---------- day of month (1 - 31) 
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ... 
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat 
# | | | | | 
# * * * * * command to be executed 

Si vous voulez entrer quelque chose dans crontab en tant que root, simplement vous connecter à votre compte root, " crontab -e "et voila ... racine crontab.

+0

Dans certaines versions (plus anciennes) de cron, un utilisateur est spécifié dans le crontab. Voir http://www.unixgeeks.org/security/newbie/unix/cron-1.html – jschmier

Questions connexes