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)

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

xauth merge /home/<юзер>/.Xauthority

Или лучше прописать:

Defaults env_keep+="DISPLAY XAUTHORITY"
в sudoers.

Meyer ★★★★★
()
Последнее исправление: Meyer (всего исправлений: 1)

Так а в ~/.profile, ~/.shellname_profile или ~/.xinitrc самого пользователя не проще прописать запуск Firefox?

Kron4ek ★★★★★
()
Ответ на: комментарий от firkax

firefox глюкавит(а может видеодрайвер глюкавит) после выхода из standby. Я его киляю и хочу запустить заново

serg002 ★★★
() автор топика
Ответ на: комментарий от serg002

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

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

#!/bin/sh

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

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

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

#xauth merge /home/user/.Xauthority #sudo -u user bash -c «firefox-bin» Error: cannot open display: localhost:0.0

serg002 ★★★
() автор топика
Ответ на: комментарий от serg002

Эту команду надо не от рута запускать, а от локального пользователя, который запустил иксы.

mxfm ★★
()
$ xhost +
$ su -
# sudo -u user "firefox-bin"

но что-то мне подсказывает

# firefox-bin

здесь сработает, но это под root будет

NK ★★★★★
()
Ответ на: комментарий от serg002

В современных Линукс-системах повышать привелегии гуёвых программ принято через написание правил polkit

Jameson ★★★★★
()
Ответ на: комментарий от serg002

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

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

Jameson ★★★★★
()
Последнее исправление: Jameson (всего исправлений: 1)
10 августа 2022 г.
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.