gksudo je rozhraní sudo založené na GTK (BTW, kdesudo je frontend založený na Qt, nicméně (ve výchozím nastavení) zpracovává více proměnných prostředí (HOME , XAUTHORITY , atd.) než sudo takže spouštění příkazů jako root je bezpečnější.
Pokud vidím, pouze odpověď @Logics je dostatečně správná (@Ignacio Vazquez-Abrams není úplná). Zde je pokus vyhnout se vysvětlení pro odpověď/komentáře @Davros @knitti (Pokud to není potřeba, laskavě je odstraňte/upravte):
- Ačkoli oba příkazy ve skutečnosti představují
sudo, použité uživatelské rozhraní NENÍ jediným rozdílem mezi těmito dvěma příkazy. - Spuštění programu GUI NENÍ jedinou situací, kdy byste měli použít gk/kdesudo, místo toho byste měli použít gk/kdesudo, kdykoli nemůžete určit, zda příkaz vytvoří/zapíše soubory do vašeho domovského adresáře (což je
HOMEProměnná prostředí ukazuje nasudopříkaz v některých systémech a situacích). Ne všechny aplikace GUI zapisují do vašeho domovského adresáře a ne všechny aplikace CLI ne , takže typ příkazu není klíčovým bodem. - Pořád můžete použijte
sudopříkaz ke spouštění aplikací GUI jako root (pro zobrazení výstupu konzole aplikací jako příklad), ale musíte zvládnoutHOME(a další, jako jeXAUTHORITY,DISPLAY, input-method-related-stuff, atd.) environmentální proměnné správně, aby spuštěná aplikace neselhala, neztratila funkčnost nebo nedělala opravdu špatné věci. Níže je moje aktuální doporučení pro použitísudosudo -H <rest of the command>- (z
sudosekce 8 manuálová stránka)-H ( HOME )volba vyžaduje, aby bezpečnostní politika nastavilaHOMEproměnnou prostředí do domovského adresáře cílového uživatele (standardně root), jak je určeno databází hesel. V závislosti na zásadách to může být výchozí chování. - To by mělo přinejmenším zabránit vytváření souborů v
sudodomovský adresář volajícího
- (z
sudo -H DISPLAY=<a working X display name, usually :0> <rest of a GUI program command>- To by mělo umožnit spuštění
v terminálu TTY a zobrazení ve vašem desktopovém prostředí
- To by mělo umožnit spuštění
- Chování
sudopříkaz není identický na všech systémech a lze jej konfigurovat pomocívisudopříkaz, podívejte se prosím nasudoers(5)manpage pro více informací.
sudo požádá o heslo na příkazovém řádku a gksudo zobrazí dialogové okno.
Používání běžného sudo ke spouštění grafických programů ve vzácných případech naruší oprávnění k některým souborům. Pro spouštění programů s GUI by se mělo používat gksudo (nebo kdesudo). Myslím, že je to opravdu chyba, i když jsem slyšel vysvětlení, že gksudo rozumí proměnným X serveru a sudo pravděpodobně nevede k problémům. Jen jako tip; pokud spouštíte grafické programy jako root, místo otevírání jednoho terminálu pro každý program, který chcete spustit, zadejte ALT-F2 (alt a funkční klávesa 2 současně) a poté zadejte do dialogového okna, které se objeví "gksudo program" bez uvozovek a programu nahrazeného aplikací, kterou chcete spustit.