34

В чем разница между sudo и gksudo?

5 ответов5

30

gksudo - это основанный на GTK интерфейс sudo(кстати, kdesudo - это основанный на Qt интерфейс), однако он (по умолчанию) обрабатывает больше переменных среды (HOME , XAUTHORITY и т. д.), чем sudo что делает выполнение команд более безопасным для пользователя root.


Насколько я вижу, только ответ @Logics является правильным (@Ignacio Vazquez-Abrams не является полным). Вот пояснение к попыткам избежать @Davros @knitti answer/comments (пожалуйста, удалите / отредактируйте их, когда это не нужно):

  1. Хотя обе команды действительно представляют sudo , используемый интерфейс НЕ является единственным отличием этих двух команд.
  2. Запуск программы с графическим интерфейсом не является единственной ситуацией, когда вы должны использовать gk/kdesudo, вместо этого вы должны использовать gk/kdesudo всякий раз, когда вы не можете определить, будет ли команда создавать / записывать файлы в ваш домашний каталог (на что указывает переменная среды HOME в команда sudo в некоторых системах и ситуациях). Не все приложения с графическим интерфейсом записывают данные в ваш домашний каталог, а не все приложения с интерфейсом командной строки - нет , поэтому тип команды не является ключевым моментом.
  3. Вы по- прежнему можете использовать команду sudo для запуска приложений с графическим интерфейсом от имени пользователя root (для просмотра вывода консоли приложений в качестве примера), однако вам нужно обрабатывать HOME (и другие, такие как XAUTHORITY , DISPLAY , input-method-related-stuff и т.д.) переменные среды правильно, чтобы запущенное приложение не выходило из строя, не теряло функциональности и не делало действительно плохих вещей. Вот моя текущая рекомендация по использованию sudo
    • sudo -H <rest of the command>
      • (из страницы руководства раздела sudo 8) Опция -H ( HOME ) запрашивает, чтобы в политике безопасности была задана переменная среды HOME для домашнего каталога целевого пользователя (root по умолчанию), как указано в базе данных паролей. В зависимости от политики это может быть поведение по умолчанию.
      • Это должно как минимум предотвратить создание файлов в домашнем каталоге sudo caller.
    • sudo -H DISPLAY=<a working X display name, usually :0> <rest of a GUI program command>
      • Это должно позволить <GUI программе> выполняться в терминале TTY и отображаться в вашей рабочей среде
  4. Поведение команды sudo не одинаково во всех системах и может быть настроено с помощью команды visudo Для получения дополнительной информации посетите страницу руководства sudoers(5) .
26

sudo запрашивает пароль в командной строке, и gksudo открывает диалоговое окно для этого.

2

Использование обычного sudo для запуска графических программ в редких случаях может испортить права доступа к некоторым файлам. Для безопасности gksudo (или kdesudo в зависимости от ситуации) следует использовать для запуска программ с графическим интерфейсом. Я думаю, что это действительно ошибка, хотя я слышал объяснения, что gksudo понимает переменные X-сервера и sudo, возможно, не приводит к проблемам. Просто как совет; если вы запускаете графические программы от имени пользователя root, вместо того, чтобы открывать по одному терминалу для каждой программы, которую вы хотите запустить, введите ALT-F2 (alt и функциональная клавиша 2 одновременно), а затем введите всплывающее диалоговое окно "gksudo" Программа "без кавычек и программа заменена на приложение, которое вы хотите запустить.

2

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

gksudo (kdesudo под KDE) запускает приложения от имени пользователя root, поэтому любые права доступа к файлам относятся к файлам root, а не к файлам пользователей. повторный запуск этих приложений без gksudo/kdesudo всегда будет иметь ожидаемое поведение.

0

Текущий ответ неверен. Согласно вики Ubuntu RootSudo:

«Вы никогда не должны использовать обычный sudo для запуска графических приложений от имени root. Вы должны использовать gksudo (kdesudo на Kubuntu) для запуска таких программ. gksudo устанавливает HOME = ~ root и копирует.Xauthority для каталога tmp. Это предотвращает принадлежность файлов в вашем домашнем каталоге пользователю root. (AFAICT, это все, что особенного в среде запущенного процесса с gksudo vs. sudo). "

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .