Не мог запустить XAMPP, использующий sudo в Настольной Записи

Я использую Ubuntu 18.04. Я установил XAMPP и создал .desktop файл для выполнения его.

[Desktop Entry]
Type=Application
Name=XAMPP Control Panel
Version=7.3.0.0
Exec=sudo -i python /opt/lampp/share/xampp-control-panel/xampp-control-panel.py
Encoding=UTF-8
Terminal=false
Comment=Start and Stop XAMPP
Icon=/home/lee/.local/favicon.ico

Но, по некоторым причинам это не будет работать. "Исполнительная" строка хорошо работает на CL. У меня есть он набор для выполнения. Какие-либо идеи?

1
задан 1 November 2019 в 11:07

2 ответа

Вот решение, с благодарностью кому: @Kulfy

#!/usr/bin/env xdg-open
[Desktop Entry]
Name=XAMPP
Type=Application
Exec=sh -c "pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY sudo /opt/lampp/manager-linux-x64.run"
Terminal=false
Icon=/opt/lampp/htdocs/favicon.ico
Terminal=false
1
ответ дан 7 December 2019 в 13:19

Для запуска приложений в таких дистрибутивах, как Ubuntu, где учетная запись root по умолчанию отключена, используется sudo . Когда sudo с командой запускается в Терминале, он запрашивает пароль. Но когда он используется в записи на рабочем столе, по умолчанию это невозможно предоставить. Однако для запуска приложения от имени суперпользователя с помощью записи на рабочем столе можно использовать следующие методы.

  1. Использование Терминал Клавиша:

    Клавиша Терминал позволяет приложению запускаться в Терминал, то есть командная строка, используемая в Exec , будет работать так, как если бы она выполнялась в терминале, открывая новое окно терминала и позволяя пользователю ввести пароль. Ключ должен быть добавлен следующим образом:

     Terminal = true
     

    Но у этого метода есть проблема. Поскольку он открывает дополнительное приложение, то есть окно терминала, это приводит к дополнительному потреблению ОЗУ и циклов ЦП.

  2. Использование pkexec :

    Другой способ - использовать pkexec . pkexec открывает графическое окно для ввода пароля. Но он не позволяет запускать приложения X11 от имени другого пользователя, поскольку переменные среды $ DISPLAY и $ XAUTHORITY не установлены (Ссылка: Ответ Раду Рэдяну ) .

    Однако переменные не будут раскрыты в записи рабочего стола, поскольку это не оболочка. Следовательно, вы можете запустить команду с помощью оболочки, то есть

     Exec = sh -c 'pkexec env DISPLAY = $ DISPLAY XAUTHORITY = $ XAUTHORITY / path / to / executable'
     

    Вы можете использовать bash или любую поддерживаемую оболочку вместо bash .

    Но это приведет к созданию процесса sh или bash, который будет ждать завершения приложения, таким образом потребляя некоторую память.

  3. Редактирование / etc / sudoers :

    Некоторым приложениям, таким как XAMPP, требуется для запуска от имени суперпользователя. Вы можете разрешить запуск некоторых конкретных приложений, даже не запрашивая пароль, отредактировав / etc / sudoers и добавив туда приложение.

    • Чтобы разрешить всем sudoers запускать приложение без пароля, добавьте следующую строку к / etc / sudoers .

      % sudo ALL = (root) NOPASSWD: / путь / к / приложению
       
    • Чтобы разрешить конкретному пользователю в sudoer запускать приложение без пароля, добавьте

       USER ALL = (root) NOPASSWD: / path / to / application.
       

      например:

       kulfy ALL = (root) NOPASSWD: /opt/lampp/manager-linux-x64.run
       

    Чтобы добавить через командную строку, вы можете использовать tee с опцией a . Пример:

     echo 'kulfy ALL = (root) NOPASSWD: /opt/lampp/manager-linux-x64.run' |  sudo tee -a / etc / sudoers
     

    Предупреждение: Не перезаписывайте содержимое / etc / sudoers , иначе вы не сможете выполнять действия sudo. Только добавить строку выше. Рекомендуется иметь резервную копию этого файла.


Сноска: Чтобы использовать панель управления XAMPP, вместо xampp-control-panel.py следует выполнить команду manager-linux-x64.run. Более ранний является исполняемым двоичным файлом и отвечает за отображение графического интерфейса пользователя, в то время как скрипт Python является его частью, т.е. это не полная панель управления.

3
ответ дан 7 December 2019 в 13:19

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

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