Как запустить приложение как root от Unity Launcher?

В основном я ищу способ прикрепить приложение к панели запуска Unity и запустить его от имени пользователя root.

В настоящее время, даже если я запускаю приложение с помощью sudo и прикрепляю его после запуска, оно в следующий раз запустится как текущий пользователь.

Печально, но в контекстном меню нет опции "запускать как...".

Обновление: я перешел на gnome3 и теперь я счастлив, мне не хватает только поиска.

11 ответов

Решение

Если вы хотите, чтобы приложение всегда запускалось от имени пользователя root

  1. Прикрепи приложение к лаунчеру как обычно.

  2. Найдите файл.desktop для приложений, который будет находиться в:

    • /usr/share/applications/APPNAME.desktop
    • ~/.local/share/applications/APPNAME.desktop
    • или где-то еще, используйте locate .desktop|grep APPAME
  3. Открыть с помощью gedit:

    gksudo gedit /usr/share/applications/APPNAME.desktop
    
  4. Затем измените строку

    Exec=APP_COMMAND
    

    в

    Exec=gksudo -k -u root APP_COMMAND
    
  5. Сохранить

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

Чтобы добавить опцию быстрого списка "Запуск от имени 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. Может это поможет?

Удачи

В качестве быстрой и простой альтернативы громоздким требованиям, описанным в ответах здесь, я привык делать следующее...

  1. Запустить новый терминал.
  2. Войти 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» в панели запуска у меня сработало следующее:

  1. В терминале запуститеecho pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITYи скопируйте вывод.
  2. Откройте и отредактируйте конфигурацию ярлыка приложения, обычно
      sudo nano /usr/share/applications/YOUR_APP.desktop
  1. В[Desktop Entry]раздел добавить в концеActions=Run as root
  2. И ниже добавить
      [Desktop Action Run as root]
Name=Run as root
Exec=pkexec env DISPLAY=:0 XAUTHORITY=/run/user/1000/gdm/Xauthority YOUR_APP
OnlyShowIn=Unity
  1. В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, ты можешь использовать:

  1. Добавьте следующую строку в /etc/sudoers (sudo gedit /etc/sudoers)

    • YOURUSERNAME ALL = NOPASSWD: /script/path
  2. Создайте ярлык на рабочем столе:

    • gedit ~/Desktop/myshortcut.desktop
  3. Добавьте следующий контент:

    #!/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

  4. Щелкните правой кнопкой мыши и ярлык и выберите 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.

  1. бежать echo pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITYв терминале
  2. скопируйте его вывод
  3. редактировать соответствующие .desktopфайл в /usr/share/applications/
  4. вставьте вывод 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 для закрытия файла. Должно работать сейчас.

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