GNU/Linux >> Znalost Linux >  >> Linux

sudoedit:proč to používat přes sudo vi?

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?


Linux
  1. Proč ke správě svého jógového studia používám Linux

  2. sudoedit:příkaz nenalezen

  3. Jak používat příkaz su přes adb shell?

  1. Linux – proč používáme Su – a nejen Su?

  2. Ssh – Proč je Firefox tak pomalý oproti Ssh?

  3. Proč je úprava core_pattern omezena?

  1. Proč používat shm_open?

  2. Používat zařízení přes SSH?

  3. Proč by člověk měl používat sudo?