2009-11-04 11 views
1

J'ai un script contenant beaucoup de commandes qui ont besoin de droits root. Au lieu d'exécuter toutes ces commandes avec sudo dans le script, je préfère exécuter tout le script avec sudo. C'est aussi plus confortable de le mettre dans le fichier sudoers.kdialog barre de progression "objet non accessible" en tant que root

sudo ./script.sh 

Cependant, je voudrais montrer les progrès avec une barre de progression kdialog, qui ne fonctionne pas. La boîte de message contenant la barre apparaît mais lorsque vous essayez de mettre à jour la progression, il y a un message d'erreur "objet non accessible".

dcopRef=`kdialog --progressbar "Initialising..." 5` # works 
dcop $dcopRef setProgress 1 # error object not accessible 

Je suis sûr qu'il a à voir avec les droits des utilisateurs, puisque le code barre de progression fonctionne appeler le script sans sudo, mais je ne sais pas où commencer. Est-ce que quelqu'un sait comment résoudre ce problème et appelle toujours le script avec sudo?

J'utilise openSUSE 10.3 avec KDE 3.5.7

Merci, Chris

Répondre

0

Enfin, je trouve un moyen de résoudre mon problème! Il est pas beau, mais il fonctionne ...

A l'intérieur du fichier « » script.sh vous accédez à la barre de progression que l'original (non root) avec l'aide de sudo:

dcopRef=`sudo -H -u $SUDO_USER kdialog --progressbar "Initialising..." 5` 
dcop sudo -H -u $SUDO_USER $dcopRef setProgress 1 

Vous doit autoriser explicitement appeler la racine à utiliser « kdialog » et « dcop » en tant qu'utilisateur (bien que cela semble un peu bizarre) en ajoutant ceci à vos sudoers d'abord le fichier:

root ALL = (ALL) NOPASSWD: /opt/kde3/bin/ 

Voilà.