Как запустить приложение как root от Unity Launcher?
В основном я ищу способ прикрепить приложение к панели запуска Unity и запустить его от имени пользователя root.
В настоящее время, даже если я запускаю приложение с помощью sudo и прикрепляю его после запуска, оно в следующий раз запустится как текущий пользователь.
Печально, но в контекстном меню нет опции "запускать как...".
Обновление: я перешел на gnome3 и теперь я счастлив, мне не хватает только поиска.
11 ответов
Если вы хотите, чтобы приложение всегда запускалось от имени пользователя root
Прикрепи приложение к лаунчеру как обычно.
Найдите файл.desktop для приложений, который будет находиться в:
/usr/share/applications/APPNAME.desktop
~/.local/share/applications/APPNAME.desktop
- или где-то еще, используйте
locate .desktop|grep APPAME
Открыть с помощью gedit:
gksudo gedit /usr/share/applications/APPNAME.desktop
Затем измените строку
Exec=APP_COMMAND
в
Exec=gksudo -k -u root APP_COMMAND
Сохранить
Эта команда также сохранит вашу среду, которая очень полезна, если вам нужно подключиться к другим серверам и использовать свой закрытый ключ.
Чтобы добавить опцию быстрого списка "Запуск от имени root"
Выполните шаги 1, 2 и 3 выше
Если на панели запуска в настоящее время нет других опций быстрого списка, просто добавьте это в конец документа
X-Ayatana-Desktop-Shortcuts=Runroot
[Runroot Shortcut Group]
Name=Run as root
Exec=gksudo -k -u root APP_COMMAND
TargetEnvironment=Unity
Поскольку это старый вопрос, со старым ответом; В дополнение к удивительному объяснению @edm.
По состоянию на Ubuntu 18.04 и позже, gksudo (gksu
) устарела и поэтому не имеет кандидата на установку в официальных репозиториях. Альтернативой является использование pkexec.
Редактировать файл /usr/share/applications/APPNAME.desktop
и изменить линию
Exec=APP_COMMAND
в
Exec=pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY APP_COMMAND
Подробнее о pkexec здесь.
В главном меню в разделе "Системные настройки" введите gksudo
в поле "Командная строка" свойств запуска, например:
/usr/bin/gksudo /usr/bin/yourapplication
Ваше имя может содержать:
sudo yourapplication
Пользователи знают, что они могут увидеть всплывающее окно с паролем и почему...
Я не уверен насчет Unity Launcher vs Main Menu. Может это поможет?
Удачи
В качестве быстрой и простой альтернативы громоздким требованиям, описанным в ответах здесь, я привык делать следующее...
- Запустить новый терминал.
Войти
gksu nautilus
(
sudo -i nautilus
тоже работает.)
Полученное окно находится под зонтиком sudo, так что вы можете использовать его для доступа и запуска файлов с привилегиями sudo-root для содержимого вашего сердца, пока оно не закроется. Это пригодится для переходных ситуаций, когда вам не нужно более постоянное решение. Например, я использую его для извлечения сжатых файлов в защищенные системные папки.
Следующее, кажется, делает то же самое, не требуя личных атрибутов:
Actions=Runroot;Another
[Desktop Action Runroot]
Name=Run as root
Exec=gksudo -k -u root APP_COMMAND
[Desktop Action Another]
Name=Another action
Exec=whatever
Для Ubuntu 22.04 и быстрой команды «Запуск от имени пользователя root» в панели запуска у меня сработало следующее:
- В терминале запустите
echo pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY
и скопируйте вывод. - Откройте и отредактируйте конфигурацию ярлыка приложения, обычно
sudo nano /usr/share/applications/YOUR_APP.desktop
- В
[Desktop Entry]
раздел добавить в концеActions=Run as root
- И ниже добавить
[Desktop Action Run as root]
Name=Run as root
Exec=pkexec env DISPLAY=:0 XAUTHORITY=/run/user/1000/gdm/Xauthority YOUR_APP
OnlyShowIn=Unity
- В
Exec=
строку, вставьте строку из первого шага перед командой YOUR_APP.
Если все в порядке, дополнительная команда « Запуск от имени пользователя root» должна появиться после щелчка правой кнопкой мыши по значку YOUR_APP . В моем случае почти сразу, но пришлось перезапустить приложение.
Я отправляю это в ответ на вопрос, который Крис задал в комментариях:
Предположим, вы хотите создать панель запуска, которая откроет "файловый менеджер (nautilus)" от имени пользователя root. Тогда вы можете сделать это:
Откройте терминал. Тип:
sudo -H gedit /usr/share/applications/nautilus_root.desktop
Нажмите Enter. Когда спросят, введите свой пароль для входа и нажмите Enter. Это откроет Gedit (текстовый редактор). Теперь вставьте туда следующее:
[DesktopEntry]
Encoding=UTF-8
Name=Nautilus(Root)
Comment=FileManager
Exec=gksu nautilus
Icon=file-manager
Categories=System;
Type=Application
Terminal=0
Теперь просто сохраните его и выйдите. Вы сделали. Теперь, если вы ищете на приборной панели, вы найдете новый пусковой механизм "Nautilus (Root)". Нажав на это, вы спросите пароль, и после аутентификации nautilus будет открыт как root.
Примечание: будьте осторожны, когда вы используете "Nautilus (Root)". В этом режиме вы можете удалить почти все из /
и сломать систему.
Чтобы создать ярлык, который выполняет сценарий с правами root в Ubuntu
20.04
, ты можешь использовать:
Добавьте следующую строку в
/etc/sudoers
(sudo gedit /etc/sudoers
)-
YOURUSERNAME ALL = NOPASSWD: /script/path
-
Создайте ярлык на рабочем столе:
-
gedit ~/Desktop/myshortcut.desktop
-
Добавьте следующий контент:
#!/usr/bin/env xdg-open [Desktop Entry] Version=1.0 Type=Application Terminal=false Exec=sudo /script/path myarg Name=Shortcut Name Comment=Shortcut Comment Icon=/usr/share/icons/Humanity/actions/16/media-playback-start.svg
Щелкните правой кнопкой мыши и ярлык и выберите
Allow Launching
:
https://ask-ubuntu.ru/images/c099d3d cc802b0c226acf041d c68c24298ddd c79.png
Возможно, это должен быть комментарий к решению Дэниела. У меня это работает даже в Ubuntu 15.04. Я должен был поставить команду между кавычками Exec=gksu "nautilus --new-window"
из-за дополнительного аргумента. Кроме того, почему-то я не знаю почему, мне пришлось редактировать панель запуска напрямую, чтобы сохранить исходное меню (вместе с новой опцией). Если вы перетащите свой собственный модуль запуска, он будет зарегистрирован, но у вас не будет того же меню.
В Ubuntu 15.04 для запуска nautilus используется usr/share/applications/org.gnome.Nautilus.desktop
, Вы должны использовать командную строку, чтобы увидеть реальное имя файла.
Дальнейшие исследования привели меня к тому, что я считаю лучшим вариантом: http://ubuntuhandbook.org/index.php/2014/04/ubuntu-14-04-add-open-as-rootadministrator-to-context-menu/. Вместо того, чтобы открывать Nautilus полностью как Root, это позволяет вам открывать выбранные каталоги как Root в Nautilus. Во всяком случае, я проверил, и эти два варианта совместимы. Если вы откроете Nautilus как Root, а затем воспользуетесь вторым вариантом, чтобы открыть каталог как Root, он просто откроет его, не спрашивая пароль.
Поскольку я также застрял на этом, я наконец нашел решение, которое сработало для меня в Ubuntu 20.x LTS.
- бежать
echo pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY
в терминале - скопируйте его вывод
- редактировать соответствующие
.desktop
файл в/usr/share/applications/
- вставьте вывод 1. после
Exec=
ваша последняя команда должна выглядеть примерно такExec=pkexec env DISPLAY=:0 XAUTHORITY=/run/user/1000/gdm/Xauthority /usr/sbin/kvpm
Начиная с Ubuntu 18.04
gksu
обесценивается,
pkexec
требует установки и не всегда работает. Вот еще один способ:
В соответствии с ответом edm отредактируйте строку EXEC, но добавьте только «sudo», например
/usr/bin/nvidia-settings
становится
sudo /usr/bin/nvidia-settings
. Пользователи MenuLibre (и, возможно, другие редакторы меню с графическим интерфейсом):
Command
строка в MenuLibre отправляет на
EXEC
строку в файле, поэтому вам не нужно копаться в
.desktop
файл из.
Если вы попробуете это из меню сейчас, ничего не произойдет. Sudo вызывается без графического интерфейса, поэтому ничего не происходит, и он молча терпит неудачу. Это ожидаемо.
В терминале:
sudo visudo
затем добавьте внизу (вставить правой кнопкой мыши):
YOURUSERNAME ALL=(ALL) NOPASSWD: /usr/bin/nvidia-settings
ctrl+o для сохранения, Enter, ctrl+X для закрытия файла. Должно работать сейчас.