如何在管道之间的bash脚本中放弃特权?

问题描述 投票:0回答:1
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用户身份运行。有没有办法以root用户身份执行dbus-monitor,以普通用户身份执行其余管道?不能在sudo之前添加dbus-monitor,因为这只是一种解决方法,我可能打算以root用户身份执行脚本,并且它将无缘无故地再次升级特权。我也想利用polkit,例如pkexec。谢谢!

linux bash sudo dbus polkit
1个回答
0
投票

就像这样:

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

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

© www.soinside.com 2019 - 2024. All rights reserved.