0
dbus-monitor --system --profile interface=org.freedesktop.login1.Session,type=signal,member={Lock,Unlock} |
  egrep --line-buffered -o 'Lock|Unlock' |
  while read SIGNAL; do
    case "${SIGNAL}" in
      Lock)
        for i in "$(systemd-path user-shared)/watchlock/lock.d/"*; do
          "${i}"
        done
        ;;
      Unlock)
        for i in "$(systemd-path user-shared)/watchlock/unlock.d/"*; do
          "${i}"
        done
        ;;
    esac
  done

このスクリプトを作成しました。通常のユーザーとして実行したいのですがdbus-monitor、root としてしか機能しません。dbus-monitorルートとして実行し、残りのパイプを通常のユーザーとして実行する方法はありますか? sudo前に追加するdbus-monitorことは単なる回避策であるため、オプションではありません。スクリプトをルートとして実行することを意図すると、理由もなく特権が再び昇格します。pkexecたとえば、polkitも利用したいと思います。ありがとう!

4

1 に答える 1

0

ちょうどこのような:

cmd_a | sudo -u "${USER}" cmd_b

スクリプトがルートとして開始された場合、ルートcmd_aとしてcmd_b実行され、$USER として実行されます。

于 2020-02-14T09:04:15.700 に答える