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

81

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

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

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

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

Сорин
источник
Если вам известен риск запуска графических приложений от имени пользователя root и вы все еще хотите продолжить, выполните шаг 1 здесь: askubuntu.com/a/118483/41562
edm
Вы не поняли вопрос, я знаю, как использовать, sudoи я уже настроил его. Вопрос в том, как мне создать ярлык для запуска Ubuntu Unity для приложения, которое я хочу запускать от имени пользователя root.
Сорин
Для единства запуска, я не знаю. Но если у вас есть файл, который находится на вашем рабочем столе, и вы хотите запустить его как gksu, тогда вы можете установить расширение «nautilus execute».
Любопытный ученик

Ответы:

89

Если вы хотите, чтобы приложение всегда запускалось от имени пользователя 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
измерение расстояния светодальномер
источник
51
Почему так сложно установить простой ярлык? Что не так с создателями Ubuntu?
Sliq
7
для gksudoкоманды, вы должны установитьsudo apt-get install gksu
Арул
5
@Sliq это называется безопасность ... Наличие иконки на рабочем столе, которая выполняется от имени пользователя root без пароля ... очень опасно ... Для меня это на самом деле радость Linux ... Если бы я хотел легкой жизни ... Я бы использовал Windows в качестве моей основной системы ...
Злой 84
3
@sliq "Почему так сложно выполнить команду grep из командной строки? Что не так с создателями Windows?" - Создатели Ubuntu ... вероятно,
thenaglecode
3
устаревший для Ubuntu 18.XX Может ли кто-нибудь предоставить обновленное решение?
JRsz
4

В главном меню в разделе «Система» «Настройки» введите gksudoв поле «Команды» свойства запуска, например:

/usr/bin/gksudo /usr/bin/yourapplication

Ваше имя может содержать:

sudo yourapplication

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

Я не уверен насчет Unity Launcher vs Main Menu. Может это поможет?

Удачи

boolship
источник
3
Вы, вероятно, знаете, что прямое sudoне должно использоваться для запуска графических приложений, поскольку - в rootконце концов, вы используете gksudo(что является одним из хороших способов). По той же причине нецелесообразно использовать sudoв поле имени, как вы, потому что при этом (1) создается впечатление у достаточно опытных пользователей, что ваш лаунчер сделан неправильно, и (2) создается впечатление у менее опытных пользователей. что это нормально использовать прямо sudoдля запуска графических приложений, как root.
Элия ​​Каган
Unable to locate package gksudo- Ubuntu 18.04.1 LTS
8bitjunkie
2

Следующее, кажется, делает то же самое, не требуя личных атрибутов:

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
Даниил
источник
Unable to locate package gksudo- Ubuntu 18.04.1 LTS
8bitjunkie
2

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

  1. Запустить новый терминал.
  2. Войти gksu nautilus

    ( sudo -i nautilusработает тоже.)

Полученное окно находится под зонтиком sudo, так что вы можете использовать его для доступа и запуска файлов с привилегиями sudo-root для содержимого вашего сердца, пока оно не закроется. Это пригодится для переходных ситуаций, когда вам не нужно более постоянное решение. Например, я использую его для извлечения сжатых файлов в защищенные системные папки.

Syndog
источник
2
Использование sudoс графическими приложениями не является хорошей идеей. Используйте gksuили, если вы должны sudo -i.
Сет,
2
@Seth: Обновлено. Кроме того ... Небольшое объяснение, почему бы не быть упущением, а не просто загадочно говорить, что это не очень хорошая идея.
Syndog
Интересная ветка по теме: crunchbang.org/forums/viewtopic.php?id=8468
Syndog
1

Я отправляю это в ответ на вопрос, который Крис задал в комментариях:

Предположим, вы хотите создать панель запуска, которая откроет «файловый менеджер (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)". В этом режиме вы можете удалить практически все, что угодно, /и сломать систему.

Любопытный Ученик
источник
0

Возможно, это должен быть комментарий к решению Дэниела. У меня это работает даже в Ubuntu 15.04. Мне пришлось поместить команду между кавычками Exec=gksu "nautilus --new-window"из-за дополнительного аргумента. Кроме того, почему-то я не знаю почему, мне пришлось редактировать панель запуска напрямую, чтобы сохранить исходное меню (вместе с новой опцией). Если вы перетащите свой собственный модуль запуска, он будет зарегистрирован, но у вас не будет того же меню.

В Ubuntu 15.04 лаунчер для наутилуса есть 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, он просто откроет его, не спрашивая пароль.

Dominic108
источник
0

Поскольку это старый вопрос, со старым ответом; В дополнение к удивительному объяснению @ 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 здесь .

Ярость против машины
источник