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
HOME
Proměnná prostředí ukazuje nasudo
pří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
sudo
pří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ísudo
sudo -H <rest of the command>
- (z
sudo
sekce 8 manuálová stránka)-H ( HOME )
volba vyžaduje, aby bezpečnostní politika nastavilaHOME
promě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
sudo
domovský 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í
sudo
příkaz není identický na všech systémech a lze jej konfigurovat pomocívisudo
pří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.