문제

루트 권리가 필요한 많은 명령이 포함 된 스크립트가 있습니다. 스크립트 내부의 Sudo와 함께이 모든 명령을 실행하는 대신 Sudo와 함께 전체 스크립트를 실행하는 것을 선호합니다. 이것은 또한 sudoers 파일에 넣는 것이 더 편안합니다.

sudo ./script.sh

그러나 작동하지 않는 Kdialog Progress Bar의 진행 상황을 보여주고 싶습니다. 막대가 포함 된 메시지 상자가 나타나지만 진행 상황을 업데이트하려고 할 때 "객체가 액세스 할 수 없음"오류 메시지가 있습니다.

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

진행률 바 코드가 작동하고 Sudo가없는 스크립트를 호출하기 때문에 사용자 권한과 관련이 있다고 확신하지만 어디서부터 시작 해야할지 모르겠습니다. 누구 든지이 문제를 해결하고 여전히 Sudo로 대본을 호출하는 방법을 아는 사람이 있습니까?

KDE 3.5.7과 함께 OpenSuse 10.3을 사용하고 있습니다

고마워요, 크리스

도움이 되었습니까?

해결책

마침내 나는 내 문제를 해결하는 방법을 찾았다! 아름답 지 않지만 작동합니다 ...

'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'호출을 사용자로 사용하는 것을 명시 적으로 허용해야합니다.

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

Voilà.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top