В чем разница между гксудо и гксу?

Есть ли разница между поведением gksu foo и gksudo foo?
Можно ли их использовать взаимозаменяемо?

58
задан 21 March 2018 в 13:30

3 ответа

Оба файла указывают на то же место:

$ ls -l /usr/bin/gksudo 
lrwxrwxrwx 1 root root 4 2010-09-27 18:23 /usr/bin/gksudo -> gksu

... gksudo symlinked к gksu. Но это не означает, что они делают то же самое, отнюдь нет.

Приложения могут обнаружить команду, используемую для выполнения его. Это обычно argv[0] на языках C-стиля или $0 в сценариях оболочки стиля Границы. Приложение может посмотреть на это и в этом случае, на самом деле оно изменяется, как оно работает. Первый признак этого находится в man gksu страница:

gksu  is  a  frontend  to  su  and gksudo is a frontend to sudo.

Если Вы смотрите в источнике (apt-get source gksu) для run_mode, Вы будете видеть, как это обнаруживает это:

  { /* support gksu_sudo_run */
    gchar *myname = g_path_get_basename (argv[0]);
    if (!strcmp(myname, "gksudo"))
      run_mode = SUDO_MODE;
    g_free (myname);
  }

Можно переопределить это с --su-mode/-w и --sudo-mode/-S аргументы (таким образом, можно выполнить эквивалентные команды, не нуждаясь gksudo символьная ссылка... Но Вам решать

Если Вы хотите знать, как эти "режимы" действительно отличаются, существует только немного выхода в gksu. Необходимо следовать за ним в libgksu. Это - библиотека, которая на самом деле проверяет полномочия перед передачей к системе.

Если никакой режим не указан (например, Вы звоните gksu без аргументов) к тому времени, когда это достигает libgksu, это проверит Gconf (как Stefano указывает), и если это все еще не может решить, это примет значение по умолчанию к su режим.

39
ответ дан 21 March 2018 в 13:30

В Ubuntu (!) Нет разницы.

  • gksu обычно регистрируют пользователя root и запускают приложение в этом сеансе. Однако в Ubuntu по умолчанию используется «режим sudo», который эквивалентен запуску gksudo. Это потому, что в Ubuntu вы не можете войти в систему как root по умолчанию.

  • gksudo является графическим эквивалентом sudo (и, как указывает Оли, просто символическая ссылка на gksu)

Из записи gconf gconf:

alt text

Более того, на разнице между sudo и gksudo:

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

0
ответ дан 21 March 2018 в 13:30

Я знаю, что это старая ветка, но меня попросили рассказать вам о тонком, но существенном различии между gksu и gksudo.

Хотя я долго и трудно, я не могу найти документированную разницу в любом месте, и все же она существует. Я также не выяснил, почему есть разница. Я нашел это трудным способом, когда случайно удалил некоторые системные файлы именно из-за этой разницы (обсуждаемой в теме на форумах Ubuntu ) - я использовал gksu, но с тех пор я всегда был уверен использовать gksudo.

Подводя итог, попробуйте это.

  1. Создайте три файла в некоторой папке:
    touch abc
    touch abc.tmp
    touch abctmp
  2. Выполнить следующие шесть команд. Первые пять дают тот же (ожидаемый) результат (т. Е. Просто abc.tmp), тогда как шестое включает в себя дополнительный файл (abctmp), который не должен.

    find . -regextype posix-egrep -regex '.*\.tmp' -print
    sudo find . -regextype posix-egrep -regex '.*\.tmp' -print
    gksudo -- find . -regextype posix-egrep -regex '.*\.tmp' -print
    gksudo --su-mode -- find . -regextype posix-egrep -regex '.*\.tmp' -print
    gksu --sudo-mode -- find . -regextype posix-egrep -regex '.*\.tmp' -print
    gksu -- find . -regextype posix-egrep -regex '.*\.tmp' -print
    

Представьте себе проблемы, когда вы заменяете -print на -delete в команде find (именно это и произошло со мной, в результате чего некоторые системные файлы были удалены). [ 1127]

Поэтому, пожалуйста, используйте gksudo вместо gksu.

0
ответ дан 21 March 2018 в 13:30

Другие вопросы по тегам:

Похожие вопросы: