Executer Script au démarrage en tant que Root

Résolu/Fermé
Plante - 30 juin 2010 à 20:07
 Bozzo - 14 nov. 2010 à 20:16
Bonjour,

J'ai déjà fouillé un peu partout dans vos forums et je n'arrive pas à résoudre mon problème.

J'utilise donc Ubuntu et je souhaite que lorsque je démarre la machine, un script se lance qui lui même lance une application (partImage qui va lancer une restauration d'image) demandant d'être loggé en tant que root.

Déjà, sans même essayer de faire démarrer le script au démarrage, je ne parviens pas a l'aide d'un script de démarrer partimage car il demande d'être loggé en tant que root. Avec les commandes sudo -s / su -c je n'y parviens pas.

Auriez-vous une solution ? Ou avez vu déjà rencontré se problème ?

Cordialement,

La Plante



A voir également:

3 réponses

debianhunter Messages postés 119 Date d'inscription mardi 22 décembre 2009 Statut Membre Dernière intervention 11 juillet 2010 24
Modifié par debianhunter le 6/07/2010 à 11:47
Salut,

Je ne connais pas PartImage, donc je ne proposerai une solution que pour la premiere partie de la question (lancer une application au demarrage).

Les systemes base sur Debian (dont Ubuntu fait partie), la sequence de demarrage est heritee de System V. Il faut donc pour commencer ecrire un script qui permettra de demarrer et d'arreter le processus et le placer dans /etc/init.d. Par exemple, le fichier /etc/init.d/myPartImage :
#! /bin/sh -e 
### BEGIN INIT INFO 
# Provides:          myPartImage 
# Required-Start:     
# Required-Stop:      
# Default-Start:     2 3 4 5 
# Default-Stop:      0 1 6 
# Short-Description: Starts PartImage on boot 
# Description:      xxxxxxxxxx 
### END INIT INFO 

. /lib/lsb/init-functions 

case "$1" in 
    start) 
   log_daemon_msg "Starting PartImage" "PartImage" 
   # inserer du code pour demarrer PartImage 
   log_success_msg 
    ;; 
  stop) 
   log_daemon_msg "Stopping PartImage" "PartImage" 
   # inserer du code pour arreter PartImage 
   log_success_msg 
    ;; 
  restart) 
   $0 stop 
   $0 start 
    ;; 
  *) 
    echo "Usage: $0 {start|stop|restart}" 
    exit 1 
    ;; 
esac 

exit 0 

Attention: les commentaires en debut de fichiers sont importants ! Ils indiquent le runlevel dans lequel on va arreter/demarrer le service.
L'exemple donne marche pour Debian ; pour Ubuntu le mieux est de regarder un script dans /etc/init.d pour l'equivalent des fonctions log_daemon_msg et log_success_msg.

Puis on rend ce script executable:
chmod +x myPartImage


Ce script ne sera pas appele au demarrage... pour l'instant ! Pour un runlevel #, il faut un lien symbolique dans le repertoire /etc/rc#.d correspondant qui pointe vers le script que l'on vient d'ecrire. Le nom du lien symbolique indique au process init s'il doit appeler le script avec le parametre start (demarrage du service) ou stop (arret du service), ainsi que l'ordre dans lequel se script doit etre execute. On retrouvera donc dans les repertoires /etc/rc#.d/ des liens symboliques dont le nom est K##myscriptName (resp. S##myscriptName) pour forcer l'arret (resp. le demarrage) du service en position ##.

Heureusement, il y a une commande qui fait tout ca pour nous:
cd /etc/init.d 
update-rc.d myPartImage defaults

On peut forcer l'ordre de demarrage et d'arret en ajoutant le numero de demarrage et le numero d'arret: update-rc.d myPartImage defaults 30 45
2
Merci pour cette réponse !
Mais les différents scripts lancé lors de ce démarrage, c'est comme si ils étaient lancé en tant que root ? Ca m'arrangerai beaucoup :D
1
debianhunter Messages postés 119 Date d'inscription mardi 22 décembre 2009 Statut Membre Dernière intervention 11 juillet 2010 24
30 juin 2010 à 21:07
Oui, le script est lance en tant que root.
0
Le moteur de sauvegarde CrashPlanEngine ne se lançait pas au démarrage.
Après votre aide si ;-)
Merci,
0