LINUX.ORG.RU

Запустить гуевое приложение sudo из-под рута

 , , ,


0

2
#!/usr/bin/env bash
cat /lib/systemd/system-sleep/firefox.sleep
```bash
TARGET="firefox-bin"
PATH=/sbin:/usr/sbin:/bin:/usr/bin
SLEEP=10

case $1 in
  post)
      sleep ${SLEEP}
      ps aux | grep "${TARGET}" | awk '{print $2}' | xargs kill -9
      sleep 2
      sudo -u user bash -c "${TARGET}  >/dev/null 2>&1"
    ;;
esac

Но не запускается ${TARGET}. Запускаю вручную

#sudo -u user "firefox-bin"
Error: no DISPLAY environment variable specified
#export DISPLAY=localhost:0.0
#sudo -u user "firefox-bin"
Error: cannot open display: localhost:0.0
#xauth list
gentoo-home/unix:0  MIT-MAGIC-COOKIE-1  9zb4af29186ec464214bz08db7a076d2

Как правильно прокинуть DISPLAY в root?

★★★

Последнее исправление: serg002 (всего исправлений: 2)

Ответ на: комментарий от serg002

Круто, но это намного лучше делать из гуи сессии чем подобными костылями. Если проблемы поставить хук на standby - убивать процесс можно и рутом, но запускать то зачем им?

Делаешь скрипт

#!/bin/sh

while true; do
  firefox-bin
  echo "firefox exited, waiting 5 sec"
  sleep 5
done

его ставишь в гуи автозапуск, а откуда угодно уже делаешь killall firefox-bin когда надо перезапустить

firkax ★★★★★
()
Последнее исправление: firkax (всего исправлений: 2)
Ответ на: комментарий от serg002

А ты? То что ты хочешь делается через https://wiki.archlinux.org/title/Polkit , а не весь тот твой колхоз из грязных хаков. Разберись в логике и напиши правило, там не сложно на самом деле, тем более примеры есть. У меня так кастомный гуёвый vpn клиент работает, ему чтобы соединение установить нужно привилегии поднять сначала. (не спрашивайте чем штатный не годится, мне так надо, я знаю зачем)

Ссылка на арчвики просто потому что это лучшая документация, а polkit всюду одинаковый.

Jameson ★★★★★
()
Последнее исправление: Jameson (всего исправлений: 1)
10 августа 2022 г.