Edytuj plik z uprawnieniami superużytkownika

54

Kiedy trzeba edytować pliki systemowe, zwykle jest to sytuacja, w której Emacs był uruchamiany z normalnym użytkownikiem, więc plik będzie chroniony przed zapisem. Co mogę zrobić, aby uzyskać uprawnienia roota? Mam na myśli coś M-x sudoz dired.

Nie chcę uruchamiać Emacsa jako superużytkownika i nie chcę z niego rezygnować.

smonff
źródło

Odpowiedzi:

59

Użyj C-x C-fi wpisz /su::/etc/hostnamelub /sudo::/etc/hostnameodpowiednio.

Używa to pakietu TRAMP , który jest dystrybuowany wraz z Emacsem. Ten pakiet zapewnia dostęp do zdalnych plików, a bardziej ogólnie do plików, których Emacs nie może otworzyć bezpośrednio.

artagnon
źródło
1
Dzięki. Jakie jest znaczenie tego ::?
smonff
7
: Jest separatorem; dostarczamy go po raz drugi, aby wskazać, że nie ma już żadnych argumentów. Możesz /su:otheruser@localhost:na przykład.
artagnon
5
/sudo::jest skrótem dla sudo:root@<hostname>:
włóczęgów
9

Użyj find-filez włóczęgą. W odpowiedzi na monit /sudo::/etc/ssh/ssh_configużyje sudo i podpowłoki, aby otworzyć ten plik z uprawnieniami administratora. Kiedy sudo jest używane po raz pierwszy, wyświetli monit o podanie hasła, ale dopóki sesja się nie zamknie, możesz edytować dowolny plik z tymi uprawnieniami, poprzedzając istniejące /sudo::polecenie.

Więcej informacji można znaleźć na stronie http://www.gnu.org/software/tramp/

zdeterminowany
źródło
3

Jeśli korzystasz z ivypakietu i skonfigurowałeś counsel-find-filezamianę find-file, to jedną z wstępnie skonfigurowanych „akcji bluszcza” jest edycja pliku jako root. Domyślnym hydranaciśnięciem klawisza dla tej akcji jest r.

użytkownik1404316
źródło
2

Obecnie istnieje wiele pakietów, które rozwiązują ten problem (od 2018 r.). Niektórzy z nich są:

  • sudo-edit, pozwala przełączać prawa do edycji już otwartego pliku tylko do odczytu. Wystarczy M-x sudowpisać hasło i gotowe. Myślę, że po wielu latach użytkowania jest to wygodniejsze. sudo-editpozwala ci otworzyć plik jak każdy użytkownik, ale domyślnie w sudo, jeśli nie został podany.
  • dired-toggle-sudo. To było pierwsze zapakowane rozwiązanie , które znalazłem po zadaniu tego pytania. Jest zorientowany na Dired, więc jeśli wolisz wersję zorientowaną na pliki , przeczytaj pierwszy punkt tej listy.
  • Inne rozwiązania istnieją w Melpa
smonff
źródło
2

Jeśli używasz steru. Nie potrzebujesz żadnego zewnętrznego pakietu / dodatkowej konfiguracji. działa po wyjęciu z pudełka.

Wewnątrz helm-find-filesmożesz przywołać, find file as rootktóry jest związany C-c r. Działa to dla plików lub katalogów w helm-find-filessesji.

Jeśli nie chcesz wpisywać hasła przy każdym otwarciu plików / katalogów głównych. Umieść następujący wiersz w swoim~/.authinfo.gpg

machine localhost port sudo login root password xxxxxx
machine your_machine_name port sudo login root password xxxxx

źródło

azzamsa
źródło