Edit file dengan hak pengguna super

53

Ketika Anda harus mengedit file sistem, ini adalah situasi yang biasa Anda luncurkan Emacs dengan pengguna normal sebelumnya, sehingga file tersebut akan dilindungi dari penulisan. Apa yang bisa saya lakukan untuk mendapatkan privilege root? Maksud saya sesuatu seperti M-x sudodari dired.

Saya tidak ingin meluncurkan Emacs sebagai pengguna super dan saya tidak ingin berhenti.

Smonff
sumber

Jawaban:

59

Gunakan C-x C-fdan ketik /su::/etc/hostnameatau /sudo::/etc/hostnamesebagaimana berlaku.

Ini menggunakan paket TRAMP , yang didistribusikan dengan Emacs. Paket ini menyediakan akses ke file jarak jauh, dan lebih umum ke file yang tidak dapat dibuka secara langsung oleh Emacs.

artagnon
sumber
1
Terima kasih. Apa arti dari ::?
smonff
7
The: adalah pemisah; kami menyediakannya untuk kedua kalinya untuk menunjukkan bahwa tidak ada lagi argumen. Anda bisa /su:otheruser@localhost:, misalnya.
artagnon
5
/sudo::adalah tramp singkatan untuksudo:root@<hostname>:
phils
9

Gunakan find-filedengan gelandangan. Pada prompt /sudo::/etc/ssh/ssh_configakan menggunakan sudo dan subkulit untuk membuka file itu dengan hak akses root. Ketika sudo pertama kali digunakan, ia akan meminta kata sandi, tetapi sampai sesi itu ditutup Anda dapat mengedit file apa pun dengan izin tersebut dengan mengawali dengan /sudo::perintah yang ada .

Lihat http://www.gnu.org/software/tramp/ untuk lebih jelasnya.

dgtized
sumber
3

Jika Anda menggunakan ivypaket, dan telah mengonfigurasi counsel-find-fileuntuk mengganti find-file, maka salah satu dari "tindakan ivy" yang sudah dikonfigurasi sebelumnya untuk Anda adalah mengedit file sebagai root. hydraKeystroke default untuk tindakan itu adalah r.

pengguna1404316
sumber
2

Saat ini ada banyak paket yang menyelesaikan masalah ini (mulai 2018). Beberapa dari mereka adalah:

  • sudo-edit, memungkinkan untuk mengalihkan hak pengeditan pada file read-only yang sudah dibuka. Cukup M-x sudodan ketik kata sandi dan Anda selesai. Setelah bertahun-tahun menggunakan yang satu ini, saya pikir itu lebih nyaman untuk kebutuhan ini. sudo-editmemungkinkan Anda untuk membuka file sebagai pengguna mana pun, tetapi default pada sudo jika tidak ada yang disediakan.
  • dired-toggle-sudo. Itu adalah solusi paket pertama yang saya temukan setelah mengajukan pertanyaan ini. Ini berorientasi Dired, jadi jika Anda lebih suka versi berorientasi file , lihat peluru pertama dari daftar ini.
  • Solusi lain ada di Melpa
Smonff
sumber
2

Jika Anda menggunakan Helm. Anda tidak memerlukan paket eksternal / konfigurasi tambahan. itu bekerja di luar kotak.

Di dalam helm-find-filesAnda dapat memanggil find file as rootyang terikat C-c r. Ini berfungsi untuk file atau direktori dalam helm-find-filessesi.

Jika Anda tidak ingin mengetik kata sandi setiap kali Anda membuka file root / dir. Letakkan baris berikut di blog Anda~/.authinfo.gpg

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

sumber

azzamsa
sumber