Я использую 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. У меня есть он набор для выполнения. Какие-либо идеи?
Вот решение, с благодарностью кому: @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
Для запуска приложений в таких дистрибутивах, как Ubuntu, где учетная запись root по умолчанию отключена, используется sudo
. Когда sudo
с командой запускается в Терминале, он запрашивает пароль. Но когда он используется в записи на рабочем столе, по умолчанию это невозможно предоставить. Однако для запуска приложения от имени суперпользователя с помощью записи на рабочем столе можно использовать следующие методы.
Терминал
Клавиша: Клавиша Терминал
позволяет приложению запускаться в Терминал, то есть командная строка, используемая в Exec
, будет работать так, как если бы она выполнялась в терминале, открывая новое окно терминала и позволяя пользователю ввести пароль. Ключ должен быть добавлен следующим образом:
Terminal = true
Но у этого метода есть проблема. Поскольку он открывает дополнительное приложение, то есть окно терминала, это приводит к дополнительному потреблению ОЗУ и циклов ЦП.
pkexec
: Другой способ - использовать pkexec
. pkexec
открывает графическое окно для ввода пароля. Но он не позволяет запускать приложения X11 от имени другого пользователя, поскольку переменные среды $ DISPLAY
и $ XAUTHORITY
не установлены (Ссылка: Ответ Раду Рэдяну ) .
Однако переменные не будут раскрыты в записи рабочего стола, поскольку это не оболочка. Следовательно, вы можете запустить команду с помощью оболочки, то есть
Exec = sh -c 'pkexec env DISPLAY = $ DISPLAY XAUTHORITY = $ XAUTHORITY / path / to / executable'
Вы можете использовать bash
или любую поддерживаемую оболочку вместо bash
.
Но это приведет к созданию процесса sh или bash, который будет ждать завершения приложения, таким образом потребляя некоторую память.
/ 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 является его частью, т.е. это не полная панель управления.