2012-04-26 3 views
0

J'ai un script de nuit qui effectue le ménage d'un utilisateur donné, puis s'arrête. L'arrêt nécessite des privilèges root, mais les tâches d'administration doivent s'exécuter en tant qu'utilisateur dont les fichiers sont en cours de nettoyage. Le nettoyage prend un temps indéfinissable, donc le nettoyage et l'arrêt doivent être dans le même script. Ma question est comment puis-je cron un script avec ces deux commandes, dont le premier doit être exécuté par un utilisateur ordinaire (disons Bob); et le prochain doit être exécuté en tant que root (shutdown) seulement après que le premier a été terminé. J'ai expérimenté avec le système crontab (qui peut exécuter l'admin en tant que Bob, mais ne peut pas arrêter); et en tant que root crontab (qui peut s'arrêter, mais pas exécuter les tâches d'administration comme Bob). L'aide serait très appréciée.système crontab: comment exécuter des scripts en tant que root ET en tant qu'utilisateur

Répondre

0

Vous pouvez utiliser sudo pour exécuter une commande en tant qu'autre utilisateur.

J'ai essayé ce qui suit sur Debian.

A écrit un script incluant les éléments suivants.

#!/bin/bash 

echo $HOME 

et exécuté la commande suivante racine.

sudo -u nonrootuser ./script && some-admin-command 

qui ont imprimé /home/nonrootuser et exécuté le some-admin-command

qui montre que la racine a été en mesure d'exécuter à la fois en tant qu'utilisateur normal et en tant que root. Alors gardez votre script de gestion de l'utilisateur dans le script, remplacez le nonrootuser avec Bob et some-admin-command avec la commande shutdown et exécutez-le en tant que root.

0

Dans le fichier cronjob, vous pouvez exécuter la commande de commande suivante:

0 5 * * * sudo -u nonrootser -H bash script.sh && some-command-another 

Et vous pouvez écrire un script.sh de fichier qui comprenait les éléments suivants comme:

#!/bin/bash 
echo "Hello World" 
Questions connexes