루트가 아닌 사용자로 Busctl 사용

루트가 아닌 사용자로 Busctl 사용

systemd sd-bus API를 사용하여 루트로 실행하는 대신 프로그램 내에서 사용자의 systemd 서비스 파일 상태를 시작/중지/확인하려고 합니다.

상태를 결정하는 예로 넘어가겠습니다. 명령줄에서 이 내용을 테스트했습니다. 환경을 준비하는 데 약간의 진전이 있었습니다.

$ export XDG_RUNTIME_DIR=/run/user/$(id -u)

그리고

$ export $(dbus-launch)

온라인 검색 중 다양한 출처에서 찾았습니다. 특정 사용자와 대화할 때:

$ busctl --user --verbose get-property \
   org.freedesktop.systemd1 \
   /org/freedesktop/systemd1/unit/myservice \
   org.freedesktop.systemd1.Unit ActiveState

결과:

Process org.freedesktop.systemd1 exited with status 1

이전에는 "권한 거부"와 같은 것이었습니다. 사용자 플래그 없이 루트로 실행하면 원하는 출력이 제공됩니다.

내가 놓친 부분에 대한 힌트가 있는 사람이 있나요?

관련 정보