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-monitorroot 身份执行,其余管道以普通用户身份执行?添加sudo之前dbus-monitor不是一个选项,因为它只是一种解决方法,我可以打算以 root 身份执行脚本,它会无缘无故地再次提升权限。例如,我还想使用 polkit pkexec。谢谢!

4

1 回答 1

0

像这样:

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

如果脚本以 root 身份启动,cmd_a将以 root 身份cmd_b运行并以 $USER 身份运行。

于 2020-02-14T09:04:15.700 回答