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-gnome не установлены. Если вы установите, polkit, скорее всего, начнет работать для Software Center и других подобных утилит.
sudo apt-get update
sudo apt-get install policykit-1 policykit-1-gnome
Тогда вы сможете просто запустить:
software-center
(Или выберите Центр программного обеспечения графически, как это предусмотрено в любой установленной вами среде рабочего стола.)
Если вам нужна полнофункциональная настольная система Ubuntu, я рекомендую установить метапакет для любого «аромата» Ubuntu, в который вы хотите превратить свою систему. По сути, если вы хотите обычную настольную систему Ubuntu, установите ubuntu-desktop .
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
).
gksu
считайте, что это устарело и исключено из Ubuntu 18.04Удобный способ - создать выделенный
.desktop
файл или добавить свои команды к существующему, запрашивая пароль через графический интерфейс (gksu). В приведенном ниже примере я добавляю команду для запуска Gedit и Software Center с привилегиями sudo на панель запуска Gedit. Вам нужно будетgksu
установить, чтобы использовать эту настройку:sudo apt-get install gksu
Скопируйте Gedit
.desktop file in
/ usr / share / Applications /to
~ / .local / share / Applications`:и откройте его для редактирования (перетащите его в открытое окно Gedit)
Посмотрите на строку: Действия = Окно; Документ;
Добавьте имена ваших команд в строку (это не имена, которые вы увидите в вашем интерфейсе, они используются только для внутренней ссылки в файле)
Добавьте соответствующие разделы внизу файла:
Закройте файл и перетащите его на панель запуска
Теперь вы можете запустить gedit и Software Center с правами sudo:
источник
gksu
/gksudo
. Так что ваш ответ и хорош, и необходим! Я просто надеюсь, что OP также установит / исправит polkit, так как я думаю, что это заставит ОС работать так, как они хотят.