Как получить приглашение пароля sudo GUI без командной строки?

10

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

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

Есть ли способ включить это? Ранее одна версия рабочего стола Ubuntu имела эту функцию из коробки.

Эту версию Ubuntu (которую я сейчас использую) я обновил после установки сервера.

Я добавлю, моя учетная запись уже добавлена ​​в группу sudo. Таким образом, я могу запускать такие команды, как sudo geditили, sudo apt-getно я не могу установить программное обеспечение в Ubuntu Software Center.

Шон
источник

Ответы:

10

TL; DR: Попробуйте установить policykit-1и policykit-1-gnomeпакеты.

Вы, вероятно, нуждаетесь в polkit (иначе PolicyKit).

Большинство утилит графического системного администрирования в Ubuntu, включая Software Center, обычно можно запускать без sudoчего-либо подобного. Вы просто запускаете их так же, как и любую программу.

Когда приходит время выполнить задачу, требующую прав суперпользователя, они используют polkit для выполнения необходимых действий. Polkit - это отдельный механизм от sudo, позволяющий администраторам выполнять действия от имени пользователя root. Он устанавливается в настольных системах Ubuntu, но по умолчанию не является частью установок Ubuntu Server.

Таким образом, нормальное поведение Центра программного обеспечения состоит в том, что вы можете вызывать его просто, поскольку software-centerон не будет запрашивать аутентификацию в это время, но затем, когда вы скажете ему установить или удалить программное обеспечение, он предложит вам (графически) выполнить аутентификацию.

Из вашего описания звучит так, будто ваша система была запущена как система Ubuntu Server без графического интерфейса, а затем вы установили графический интерфейс. Возможно, пакеты policykit-1Установите policykit-1 и policykit-1-gnomeУстановите policykit-1-gnome не установлены. Если вы установите, polkit, скорее всего, начнет работать для Software Center и других подобных утилит.

sudo apt-get update
sudo apt-get install policykit-1 policykit-1-gnome

Тогда вы сможете просто запустить:

software-center

(Или выберите Центр программного обеспечения графически, как это предусмотрено в любой установленной вами среде рабочего стола.)

Если вам нужна полнофункциональная настольная система Ubuntu, я рекомендую установить метапакет для любого «аромата» Ubuntu, в который вы хотите превратить свою систему. По сути, если вы хотите обычную настольную систему Ubuntu, установите ubuntu-desktopУстановите Ubuntu-рабочий стол .

sudo apt-get update
sudo apt-get install ubuntu-desktop

Это должно заполнить различные пробелы, такие как отсутствие polkit, которые идут с установкой более минимального графического интерфейса на вашей серверной системе. С другой стороны, если вы предпочитаете более минимальный графический интерфейс, вы можете просто установить эти пакеты polkit.

Дополнительную информацию смотрите в разделе Как вы запускаете Ubuntu Server с графическим интерфейсом?

sudo с графической аутентификацией.

Если вам действительно нужно запустить команды от имени пользователя root, но получить графический диалог аутентификации, то вы ищете gksudo( илиgksu ). Это обеспечивается пакетом gksuУстановить гксу . Это графический интерфейс для sudo.

Обычно gksudoиспользуется для запуска графических приложений от имени пользователя root (или другого пользователя помимо пользователя, запускающего их). Но вы также можете использовать его для запуска неграфических команд - при условии, что эти команды могут быть запущены sudo.

Вы можете запустить gksudoиз терминала, но вам не нужно. Вы можете запустить его из диалога Alt+ F2(команда запуска) или поместить его в Exec=строку .desktopфайла (или любым другим способом запуска графических программ).

Обратите внимание, что вы должны рассмотреть возможность использования gksudoграфических приложений от имени пользователя root, даже когда вы запускаете их из терминала, потому что такие команды, как графическое приложение, sudo ...где ...на самом деле могут нарушать конфигурации приложений, не являющихся пользователями root, которые их запускают. (К счастью, это поправимо.) sudo geditОсобенно печально.

Для получения дополнительной информации о проблеме с sudoграфическими приложениями и о том, что делать вместо этого, см .:

Есть также графический способ на основе polkit ... для неграфических команд.

gksudoотлично работает для запуска как графических, так и неграфических программ. Вы должны вероятно использовать это.

Но альтернатива, использующая polkit вместо sudoи работающая только для неграфических программ, есть pkexec.

Например, если вы запустите pkexec touch /root/foo.txt, вам будет предложено графическое диалоговое окно аутентификации, и, если аутентификация пройдет успешно, touch /root/foo.txtбудет запущен, создав ( или освежив ) foo.txtв /rootпапке.

  • pkexecбудет использовать неграфическое диалоговое окно, требующее терминала, в случае, если оно не может создать графическое диалоговое окно. Но это вряд ли произойдет, если вы запускаете его через средство, предоставляемое вашей графической оболочкой или средой рабочего стола.
  • Почему pkexecработа только для не являющихся -graphical программ? На самом деле он также запускает графические программы, но только если polkit был специально настроен для этого - что обычно не делается. Посмотрите man pkexecвышестоящую версию со скриншотами ) этот ответ и этот ответ для некоторых деталей, если вам интересно.

sudoпротив polkit (некоторые технические детали, только если вы заинтересованы)

Новый gksu/ gksudoбудет использовать polkit вместо того, sudoчтобы выполнять свою работу , хотя эта версия не получила широкого распространения. Я в основном довести его до рекомендовать в READMEфайл в исходном коде (автор Густаво Норонья Silva), что объясняет существенные различия между sudoи polkit. Кратко процитирую это:

PolicyKit решает проблему приложения, которому требуются более высокие привилегии, предоставляя средства, позволяющие пользователям аутентифицировать себя, а приложениям - проверять информацию об аутентификации и авторизации. Приложение должно быть структурировано таким образом, чтобы вся привилегированная операция выполнялась (предпочтительно) небольшой службой D-Bus, которой управляет непривилегированный код. Все выполняемые «действия» требуют надлежащей авторизации, которая обрабатывается с помощью Policykit.

4. Зачем поддерживать ГКСУ?

Таким образом, это, по сути, делает gksu ненужным, поскольку приложения больше не должны запускаться как привилегированный пользователь, а аутентификация пользователя выполняется агентом аутентификации PolicyKit. Но приложения должны быть подвергнуты рефакторингу для принятия этой новой структуры, и в некоторых случаях требуется, чтобы программа действительно выполняла программы от имени пользователя root.

Эти вопросы лежат в основе ситуации, в которой, я полагаю, вы находитесь:

  • Центр программного обеспечения предназначен для использования polkit для повышения привилегий, поэтому в качестве пользователя root нужно выполнять только определенные действия. Для этого ему нужен polkit, который отсутствовал (или сломался) в вашей системе.
  • Поскольку он предназначен для использования polkit, не существует готового модуля запуска для запуска Центра программного обеспечения от имени root. polkit устраняет необходимость запуска графических инструментов администрирования в большинстве случаев с правами root.
  • Но иногда вам действительно нужно запустить графическую программу от имени пользователя root. В этом случае вы можете использовать gksu/ gksudo.
    (... который может в конечном итоге использовать polkit за кулисами, но в gksudoнастоящее время в Ubuntu используется традиционный sudo).
Элия ​​Каган
источник
1
Привет, Элия, да, это был сервер без графического интерфейса, и я просто пробовал графический интерфейс ubuntu. Я запустил команду sudo apt-get install ubuntu-desktop. Я не уверен, установлен ли комплект политики. Постараюсь все равно установить. В настоящее время обновление с 12.04 по 14.04.
Шон
Я столкнулся с ситуацией, когда у меня есть приложение с графическим интерфейсом, которое я хочу запускать как обычно (без полномочий root), но оно просто должно считывать данные с последовательного порта, которым владеет root. Невозможность просто предоставить этой программе одну привилегию действительно раздражает (другими словами, я хочу систему возможностей полного объекта).
CMCDragonkai
3
Пожалуйста, не gksuсчитайте, что это устарело и исключено из Ubuntu 18.04
Натан Ф.
5

Удобный способ - создать выделенный .desktopфайл или добавить свои команды к существующему, запрашивая пароль через графический интерфейс (gksu). В приведенном ниже примере я добавляю команду для запуска Gedit и Software Center с привилегиями sudo на панель запуска Gedit. Вам нужно будет gksuустановить, чтобы использовать эту настройку:sudo apt-get install gksu

  1. Скопируйте Gedit .desktop file in/ usr / share / Applications / to~ / .local / share / Applications`:

    cp /usr/share/applications/gedit.desktop ~/.local/share/applications/gedit.desktop
    

    и откройте его для редактирования (перетащите его в открытое окно Gedit)

  2. Посмотрите на строку: Действия = Окно; Документ;

  3. Добавьте имена ваших команд в строку (это не имена, которые вы увидите в вашем интерфейсе, они используются только для внутренней ссылки в файле)

    Actions=Window;Document;gedit;Ubuntu Software Center;
    
  4. Добавьте соответствующие разделы внизу файла:

    [Desktop Action gedit]
    Name=Gedit  (with gksu)
    Exec=gksudo gedit
    OnlyShowIn=Unity;
    
    [Desktop Action Ubuntu Software Center]
    Name=Ubuntu Software Center (with gksu)
    Exec=gksudo /usr/bin/software-center
    OnlyShowIn=Unity;
    
  5. Закройте файл и перетащите его на панель запуска

Теперь вы можете запустить gedit и Software Center с правами sudo:

введите описание изображения здесь

введите описание изображения здесь

Якоб Влейм
источник
Верно. У меня нет никаких возражений. Причина, по которой я прокомментировал USC, заключается в том, что основная часть вопроса заключается в том, как OP может заставить свою систему , созданную на сервере, работать как обычная настольная система Ubuntu в отношении графической аутентификации для административных задач. Мой ответ сфокусирован на этом и объясняет общие принципы запуска программ в графическом режиме. При этом он экономит на механике gksu/ gksudo. Так что ваш ответ и хорош, и необходим! Я просто надеюсь, что OP также установит / исправит polkit, так как я думаю, что это заставит ОС работать так, как они хотят.
Элия ​​Каган