Как сбросить привилегии в скрипте bash между каналами? - PullRequest
0 голосов
/ 14 февраля 2020
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 как root, а остальные каналы - как обычный пользователь? Добавление sudo перед dbus-monitor не вариант, так как это просто обходной путь, я мог бы намереваться выполнить скрипт как root, и это повысило бы привилегии еще раз без какой-либо причины. Я также хотел бы использовать polkit, например, pkexec. Спасибо!

1 Ответ

0 голосов
/ 14 февраля 2020

Точно так же:

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

Если скрипт запускается как root, cmd_a будет работать как root, а cmd_b будет работать как $ USER.

...