Как запустить графическое приложение при запуске с привилегиями root?

Я изменил файл sudoers с помощью sudo visudo и добавил к нему 2 строки:

tiamo ALL = NOPASSWD: /home/tiamo/myscript.sh tiamo ALL = NOPASSWD: /usr/bin/command

Затем я добавил свой сценарий в «Запуск приложений» следующим образом: bash -c "sleep 1m;gksu /home/tiamo/myscript.sh"

myscript.sh выглядит так:

do some non sudo stuff do sudo command while true do launch a program sleep 15m kill the program done

После перезагрузки Ubuntu я открываю терминал и использую pgrep myscript, он показывает, что он запущен и его pid. Тем не менее, программа, которую она должна запускать, неактивна, поэтому я предполагаю, что она застревает в команде sudo, которую я добавил в файл sudoers.

Любая подсказка, почему она застревает?

SOLVED так:

Добавил команды sudo в мой /etc/rc.local. Запустите мой скрипт в приложениях запуска, таких как gnome-terminal -e ./myscript.sh. Результат скрипта теперь перенаправляется на новый терминал, и он выполняется успешно.

0
задан 8 May 2018 в 22:47

3 ответа

Файл sudoers выглядит нормально.

Скрипт, вероятно, в порядке, если ни одна из команд не блокирует его. Однако, если какая-либо из команд также является скриптами, вы, вероятно, захотите использовать . script.sh.

Я не уверен, нужна ли команда bash. Обычно я думаю, что для скрипта достаточно, чтобы исполняемый файл был правильным #!.

Существует также потенциальная проблема с запуском графических программ с правами root. Возможно, вам понадобится создать файл ~/.xinitrc со следующим содержимым:

#! /usr/bin/env bash xhost +local:

На этой странице есть информация, которую вы, вероятно, найдете полезной:

Как написать скрипт bash перезапустить процесс, если он умирает?
0
ответ дан 17 July 2018 в 14:51

Файл sudoers выглядит нормально.

Скрипт, вероятно, в порядке, если ни одна из команд не блокирует его. Однако, если какая-либо из команд также является скриптами, вы, вероятно, захотите использовать . script.sh.

Я не уверен, нужна ли команда bash. Обычно я думаю, что для скрипта достаточно, чтобы исполняемый файл был правильным #!.

Существует также потенциальная проблема с запуском графических программ с правами root. Возможно, вам понадобится создать файл ~/.xinitrc со следующим содержимым:

#! /usr/bin/env bash xhost +local:

На этой странице есть информация, которую вы, вероятно, найдете полезной:

Как написать скрипт bash перезапустить процесс, если он умирает?
0
ответ дан 20 July 2018 в 14:54
  • 1
    К сожалению! Я запускаю программу в фоновом режиме, например: program [some options] & Я пытаюсь запустить графическое приложение с правами sudo при запуске автоматически, без дополнительного ввода, требуемого от меня. Программа всегда должна быть запущена, и программа никогда не выйдет автоматически. – iTiamo 8 May 2018 в 21:47

Файл sudoers выглядит нормально.

Скрипт, вероятно, в порядке, если ни одна из команд не блокирует его. Однако, если какая-либо из команд также является скриптами, вы, вероятно, захотите использовать . script.sh.

Я не уверен, нужна ли команда bash. Обычно я думаю, что для скрипта достаточно, чтобы исполняемый файл был правильным #!.

Существует также потенциальная проблема с запуском графических программ с правами root. Возможно, вам понадобится создать файл ~/.xinitrc со следующим содержимым:

#! /usr/bin/env bash xhost +local:

На этой странице есть информация, которую вы, вероятно, найдете полезной:

Как написать скрипт bash перезапустить процесс, если он умирает?
0
ответ дан 20 July 2018 в 15:19
  • 1
    К сожалению! Я запускаю программу в фоновом режиме, например: program [some options] & Я пытаюсь запустить графическое приложение с правами sudo при запуске автоматически, без дополнительного ввода, требуемого от меня. Программа всегда должна быть запущена, и программа никогда не выйдет автоматически. – iTiamo 8 May 2018 в 21:47

Другие вопросы по тегам:

Похожие вопросы: