Відповіді:
Обидва файли вказують на одне місце:
$ ls -l /usr/bin/gksudo
lrwxrwxrwx 1 root root 4 2010-09-27 18:23 /usr/bin/gksudo -> gksu
... gksudoпосилається на gksu. Але це не означає, що вони роблять ті ж речі, далеко від цього.
Програми можуть виявити команду, яка використовується для її запуску. Зазвичай це argv[0]на мовах С-стилю або $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режимі.
bashувімкнено жорсткий режим POSIX, коли викликається як sh. І gksu це також відомо ім'я виклику.
У Ubuntu (!) Різниці немає.
gksuяк правило, увійдіть в систему користувача root і запустіть програму на цьому сеансі. Однак для Ubuntu він за замовчуванням використовує "sudo mode", що еквівалентно запущеному gksudo. Це тому, що в ubuntu ви не можете ввійти як root за замовчуванням.
gksudoє графічним еквівалентом sudo(і як вказує Олі, просто символічне посилання на gksu)
Із запису gconf gksu:

Крім того, про різницю між судо і gksudo:
Ніколи не слід використовувати звичайний sudo для запуску графічних програм як root. Для запуску таких програм слід використовувати gksudo (kdesudo на Kubuntu). gksudo встановлює HOME = ~ root та копіює .Xauthority у каталог tmp. Це запобігає становленню файлів у вашому домашньому каталозі. (AFAICT, це все, що особливо стосується середовища розпочатого процесу з gksudo vs. sudo).
- (з документації громади через Кріса Вілсона )
Я знаю, що це стара нитка, але мене попросили розповісти про тонку, але істотну різницю між gksuі gksudo.
Хоча я виглядав довго і важко, я ніде не можу знайти документально підтвердженої різниці, і все ж вона існує. Я також не з'ясував, чому є різниця. Я виявив це важким способом, коли випадково видалив деякі системні файли саме через цю різницю (обговорювались в темі на Форумах Ubuntu ) - я використовував gksu, але з тих пір я переконався, що завжди користуюся gksudo.
Підводячи підсумок, спробуйте це.
touch abctouch abc.tmptouch abctmpВиконайте наступні шість команд. Перші п'ять дають такий самий (очікуваний) результат (тобто справедливий 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команді (це саме те , що трапилося зі мною, в результаті чого деякі системні файли , які будуть видалені).
Отже, будь ласка, використовуйте gksudoзамість цього gksu.
gksudoеквівалентно набору текстуgksu --sudo-mode