แก้ไขไฟล์ด้วยสิทธิ์แบบผู้ใช้ขั้นสูง


54

เมื่อคุณต้องแก้ไขไฟล์ระบบมันเป็นสถานการณ์ปกติที่คุณเปิดตัว Emacs กับผู้ใช้ปกติก่อนดังนั้นไฟล์จะได้รับการป้องกันการเขียน ฉันจะทำอย่างไรเพื่อรับสิทธิ์รูต? ฉันหมายถึงบางสิ่งบางอย่างที่เหมือนตกM-x sudoปลา

ฉันไม่ต้องการเรียกใช้ Emacs ในฐานะผู้ใช้ระดับสูงและฉันไม่ต้องการออกจากโปรแกรม

คำตอบ:


59

ใช้C-x C-fและพิมพ์/su::/etc/hostnameหรือ/sudo::/etc/hostnameตามที่ใช้บังคับ

สิ่งนี้ใช้แพคเกจTRAMPซึ่งแจกจ่ายกับ Emacs แพ็คเกจนี้ให้การเข้าถึงไฟล์ระยะไกลและโดยทั่วไปแล้วสำหรับไฟล์ที่ Emacs ไม่สามารถเปิดได้โดยตรง


1
ขอบคุณ ความหมายของ::คืออะไร?
smonff

7
: เป็นตัวคั่น; เราจัดหาให้เป็นครั้งที่สองเพื่อระบุว่าไม่มีข้อโต้แย้งเพิ่มเติม /su:otheruser@localhost:ตัวอย่างเช่นคุณสามารถ
artagnon

5
/sudo::ชวเลขเป็นคนจรจัดสำหรับsudo:root@<hostname>:
phils

9

ใช้find-fileกับคนจรจัด ที่พรอมต์/sudo::/etc/ssh/ssh_configจะใช้ sudo และ subshell เพื่อเปิดไฟล์ที่มีสิทธิ์รูท เมื่อ sudo ถูกใช้งานครั้งแรกมันจะพร้อมท์ให้ใส่รหัสผ่าน แต่จนกว่าเซสชันนั้นจะปิดคุณสามารถแก้ไขไฟล์ใด ๆ ที่มีสิทธิ์เหล่านั้นโดยนำหน้าด้วย/sudo::คำสั่งที่มีอยู่

ดูhttp://www.gnu.org/software/tramp/สำหรับรายละเอียดเพิ่มเติม


3

หากคุณใช้ivyแพ็กเกจและได้รับการกำหนดค่าcounsel-find-fileให้แทนที่find-fileหนึ่งใน "ivy actions" ที่กำหนดค่าไว้ล่วงหน้าสำหรับคุณแล้วคือแก้ไขไฟล์เป็นรูท เริ่มต้นการกดแป้นพิมพ์สำหรับการดำเนินการที่เป็นhydrar


2

วันนี้มีแพ็คเกจมากมายที่แก้ปัญหานี้ (ณ ปี 2018) บางส่วนของพวกเขาคือ:

  • sudo-editอนุญาตให้เปลี่ยนสิทธิ์การแก้ไขในไฟล์อ่านอย่างเดียวที่เปิดอยู่แล้ว เพียงM-x sudoพิมพ์รหัสผ่านแล้วเสร็จ หลังจากใช้งานไปหลายปีฉันคิดว่ามันสะดวกกว่าสำหรับความต้องการนี้ sudo-editอนุญาตให้คุณเปิดไฟล์ในฐานะผู้ใช้ใด ๆ ก็ได้ แต่จะเป็นค่าเริ่มต้นใน sudo หากไม่มีการจัดเตรียมไว้
  • dired-toggle-sudo. มันเป็นโซลูชันแรกที่ฉันพบหลังจากถามคำถามนี้ มันเป็น Dired oriented ดังนั้นหากคุณต้องการเวอร์ชันของfile oriented ให้ดู bullet แรกของรายการนี้
  • โซลูชันอื่น ๆมีอยู่ใน Melpa

2

หากคุณใช้ Helm คุณไม่ต้องการแพ็คเกจภายนอก / การกำหนดค่าเพิ่มเติม มันออกมาจากกล่อง

ภายในhelm-find-filesคุณสามารถเรียกใช้ที่ผูกไว้กับfind file as root C-c rใช้งานได้กับไฟล์หรือไดเรกทอรีในhelm-find-filesเซสชัน

หากคุณไม่ต้องการพิมพ์รหัสผ่านทุกครั้งที่คุณเปิดรูทไฟล์ / dirs ใส่บรรทัดต่อไปนี้เพื่อของคุณ~/.authinfo.gpg

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

แหล่ง

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.