我有一个脚本,其中包含许多需要root权限的命令。与其在脚本中使用sudo来运行所有这些命令,我更喜欢使用sudo来运行整个脚本。将其放在sudoers文件中也更方便。
sudo ./script.sh但是,我想用kdialog进度条来显示进度,它不起作用。包含该条的消息框出现,但在尝试更新进度时,出现错误消息"object not accessible“。
dcopRef=`kdialog --progressbar "Initialising..." 5` # works
dcop $dcopRef setProgress 1 # error object not accessible我非常确定这与用户权限有关,因为进度条形码可以正常工作,然后在没有sudo的情况下调用脚本,但我不知道从哪里开始。有没有人知道如何修复这个问题,并且仍然使用sudo调用脚本?
我正在使用带有openSUSE 3.5.7的KDE10.3
谢谢,克里斯
发布于 2009-11-05 21:29:58
我终于找到了解决问题的方法!它不是很漂亮,但它很有效。
在'script.sh‘文件中,您可以在sudo的帮助下以原始用户(而非根用户)的身份访问进度条:
dcopRef=`sudo -H -u $SUDO_USER kdialog --progressbar "Initialising..." 5`
dcop sudo -H -u $SUDO_USER $dcopRef setProgress 1您必须显式地允许root以用户身份使用调用'kdialog‘和'dcop’(尽管这看起来有点奇怪),方法是首先将以下内容添加到sudoers文件中:
root ALL = (ALL) NOPASSWD: /opt/kde3/bin/瞧啊。
https://stackoverflow.com/questions/1673760
复制相似问题