1

root 権限を必要とする多くのコマンドを含むスクリプトがあります。これらすべてのコマンドをスクリプト内で sudo を使用して実行する代わりに、スクリプト全体を sudo で実行することを好みます。これも、sudoers ファイルに入れる方が快適です。

sudo ./script.sh

ただし、kdialog プログレス バーで進行状況を表示したいのですが、これは機能しません。バーを含むメッセージ ボックスが表示されますが、進行状況を更新しようとすると、「オブジェクトにアクセスできません」というエラー メッセージが表示されます。

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

プログレスバーコードが機能し、sudoなしでスクリプトを呼び出すため、ユーザー権限に関係していると確信していますが、どこから始めればよいかわかりません。これを修正する方法を知っていて、まだsudoでスクリプトを呼び出す方法を知っている人はいますか?

KDE 3.5.7 で openSUSE 10.3 を使用しています

ありがとう、クリス

4

1 に答える 1

0

最後に、私の問題を解決する方法を見つけました!美しくはありませんが、機能します...

「script.sh」ファイル内で、sudo を使用して元の (root ではない) ユーザーとして進行状況バーにアクセスします。

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

最初にこれを sudoers ファイルに追加して、root が call 'kdialog' と 'dcop' をユーザーとして使用することを明示的に許可する必要があります (これは少し奇妙に思えますが)。

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

ほら。

于 2009-11-05T13:29:57.923 に答える