Na tuto otázku jsem narazil, když jsem hledal něco naprosto nesouvisejícího, ale řekl jsem si, že přidám následující důležitý rozdíl, který dosud nebyl vůbec zmíněn:sudoedit nespustí váš editor jako root.
$ sudo vim /etc/farts.conf
Jednoduše spustí vim jako root, což mu umožní číst soubor. Nevýhodou je, že editor nyní běží také jako root a může dělat cokoliv. Pokud jste jen chtěli uživateli umožnit upravovat konfigurační soubor a nic jiného, škoda, že jste mu dali root na celém systému. Nic mi nebrání vytvořit shell z vim pomocí :sh
nebo :!command
, a protože se jedná o dílčí procesy, poběží také jako root.
Na druhou stranu:
$ sudoedit /etc/farts.conf
bude ve skutečnosti fungovat jinak. Vytvoří kopii s jedinečným názvem v /tmp s oprávněními uzamčenými pouze pro vašeho uživatele a poté na této kopii vytvoří váš editor normálně, bez práv root.
Jakmile editor opustíte, porovná dočasný soubor a původní soubor a bezpečně nahradí originál vaší úpravou, pokud se změnila.
V tomto scénáři je možné povolit uživateli upravovat systémový soubor, ale nedovolit mu spouštět náhodné binární soubory jako root nebo poke kdekoli v systému souborů.
To je hlavně skutečný rozdíl, zbytek, který byl zmíněn, jsou jen pěkné vedlejší účinky.
Nejprve sudo vim
již explicitně zmiňuje váš výchozí editor, což není nutné, pokud jej máte definovaný v $EDITOR
. sudoedit
ušetří vás od definování editoru pokaždé, když chcete něco upravit – a na víceuživatelském systému umožňuje každému používat editor, který se mu osobně líbí.
Jak to? Představte si systém, kde normální uživatelé dostanou pouze sudo
oprávnění pro úpravu určitých souborů. Jejich spuštění je zakázáno sudo
i když s čímkoli jiným. Museli byste jim povolit sudo vi
a sudo vim
a sudo nano
a sudo emacs
a sudo pico
(a tak dále). Místo toho, abyste to museli dělat, můžete jim jednoduše povolit sudoedit
soubor s volbou nastavení $EDITOR
na cokoliv se jim líbí. (Představte si, že byste donutili milovníka Emacsu, aby používal Vim…)
Dalším problémem je, že pokud je vaše $EDITOR
je nastaven na vim
a máte pro něj nastavení přizpůsobení v .vimrc
vašeho uživatele , tato nastavení se nepoužijí, pokud použijete sudo vim
nebo sudo $EDITOR
. sudoedit
zachová však prostředí volajícího uživatele a tím i vaše nastavení.
Viz také:Co je na sudoedit tak skvělého?