Někdy začnu upravovat konfigurační soubory v /etc
pomocí Vimu, ale zapomeňte použít sudo
pro spuštění Vim. Nevyhnutelným výsledkem pak je, že po dokončení úprav narazím na obávané upozornění, že nemám oprávnění soubor uložit.
Většinou jsou úpravy tak malé, že prostě ukončím Vim a udělám to celé znovu jako root. Mohl bych samozřejmě uložit do umístění, kam mohu zapisovat, a poté zkopírovat jako root, ale to je také poněkud nepříjemné.
Ale jsem si jistý, že existuje jednodušší způsob, jak se stát rootem nebo použít sudo
zevnitř Vimu, aniž byste museli zahodit změny. Pokud by metoda nespoléhala na sudo
nastavení pro uživatele by bylo ještě lepší.
Přijatá odpověď:
sudo nemůže změnit efektivního uživatele existujícího procesu, vždy vytvoří nový proces, který má zvýšená oprávnění a původní shell není ovlivněn. Toto je základ návrhu UNIX. Nejčastěji jen uložím soubor do /tmp jako řešení. Pokud to opravdu chcete uložit přímo, můžete zkusit použít funkci Vimu, kde může soubor převést do jiného procesu. Zkuste uložit pomocí tohoto příkazu:
:w !sudo dd of=%
Vyzkoušeno a funguje. Vim vás poté požádá o opětovné načtení souboru, ale to není nutné:stačí stisknout o abyste zabránili opětovnému načtení a ztrátě historie vracení. Můžete to dokonce uložit do příkazu/funkce Vim nebo dokonce svázat s klávesou pro snadný přístup, ale nechám to jako cvičení na čtenáři.