Судо против Гксудо. разница?

37

Какая разница между sudoа gksudo?

oneat
источник
1
Хороший вопрос. Сейчас я изучаю Linux (вы можете видеть, что я еще не нашел свою раскладку клавиатуры) Ха-ха!
r0ca

Ответы:

27

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

Игнасио Васкес-Абрамс
источник
6
У gksu (do) также есть собственная конфигурация переменных окружения, которые нужно передать дочернему элементу, отдельно от собственных функций su (do). Например, если в вашей конфигурации sudoers указано! Keep_env, отсутствие $ DISPLAY может помешать запуску графических приложений, но gksudo должен работать. Вы можете найти некоторые подробности на git.debian.org/?p=users/kov/gksu-polkit.git;a=blob;f=common/… или live.gnome.org/gksu .
Эфимент
@ephemient Так что кроме графического приглашения, sudo -Eэквивалентно gksudo?
изоморфизм
3
ответ ниже кажется намного лучше superuser.com/a/726249/112542
Джонни, почему
4
Я хочу подчеркнуть, что это не принципиальная разница, и этот ответ вводит в заблуждение новичков. Основное различие объясняется здесь: askubuntu.com/a/11766/81034 и ответ ниже (который связан с @johnywhy) выходит за рамки этого, чтобы добавить некоторый нюанс. Пожалуйста, прочтите вопрос аскубунту, а не полагайтесь на этот вводящий в заблуждение ответ.
sundar - Восстановить Монику
31

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


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

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

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

Davros
источник
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). "

eugene1832
источник
2
Есть четыре других ответа; какой из них неправильный? Разве ваш ответ по существу не такой же, как и ответ Давроса?
fixer1234
Я имел в виду ответ, помеченный как правильный. Да, Даврос говорит то же самое, но я добавил это, потому что он не содержал ссылку на источник.
eugene1832
1
Лучшим решением было бы предложить изменить этот ответ. Улучшение ответа, вероятно, будет принято (+2 повторения), в то время как дублирование ответа, вероятно, привлечет отрицательные отзывы.
fixer1234