저는 Bob 사용자를 위한 스크립트를 작성 중입니다. 관련 부분은 아래와 같습니다. 내가 가진 문제는 이 cronjob을 Bob 사용자 아래에 넣으면 zenity는 작동하지만 종료는 작동하지 않는다는 것입니다. 루트를 해제하면 제대로 작동하지만 콘솔에 zenity가 표시되지 않습니다.
#!/bin/bash
eval "export $(egrep -z DBUS_SESSION_BUS_ADDRESS /proc/$(pgrep -u Bob gnome-session)/environ)";
someValue=`DISPLAY=:0.0 zenity --text="tell me your value" --entry`
...
...
/sbin/shutdown -h "now"
또한 루트에서 실행하고 zenity를 위해 Bob에게 su를 사용하고 루트 종료로 다시 종료하려고 시도했지만 작동하지 않았습니다.
이를 수행할 수 있는 방법이 있습니까?
기타 정보
운영 체제는 Linux Mint이고 Bob은 해당 시스템의 유일한 사용자입니다.
답변1
권한이 없는 사용자는 명령줄에서 컴퓨터를 종료할 수 없습니다. Bob으로 종료 메시지를 꼭 보내야 하는 경우 를 사용하여 Bob을 sudoers에 추가할 수 있습니다 visudo
.
sudo visudo
is에 다음 줄을 추가합니다.
bob ALL = (root) NOPASSWD: /sbin/shutdown -h "now"
아카이브를 저장합니다. 그런 다음 su
bob 역할을 수행하고 명령을 테스트 할 수 있습니다.
sudo /sbin/shutdown -h "now"