Chỉnh sửa tập tin với quyền siêu người dùng


53

Khi bạn phải chỉnh sửa các tệp hệ thống, đó là một tình huống thông thường mà bạn đã khởi chạy Emacs với một người dùng bình thường trước đó, vì vậy tệp sẽ được bảo vệ chống ghi. Tôi có thể làm gì để đạt được quyền root? Tôi có nghĩa là một cái gì đó như M-x sudotừ dired.

Tôi không muốn khởi chạy Emacs với tư cách là siêu người dùng và tôi không muốn thoát khỏi nó.

Câu trả lời:


59

Sử dụng C-x C-fvà gõ /su::/etc/hostnamehoặc /sudo::/etc/hostnamenhư áp dụng.

Điều này sử dụng gói TRAMP , được phân phối với Emacs. Gói này cung cấp quyền truy cập vào các tệp từ xa và nói chung là các tệp mà Emacs không thể mở trực tiếp.


1
Cảm ơn. Ý nghĩa của là ::gì?
smonff

7
The: là một dấu phân cách; chúng tôi cung cấp lần thứ hai để chỉ ra rằng không còn tranh luận nữa. Bạn có thể /su:otheruser@localhost:, ví dụ.
artagnon

5
/sudo::là cách viết tắt của tramp chosudo:root@<hostname>:
phils

9

Sử dụng find-filevới tramp. Tại dấu nhắc /sudo::/etc/ssh/ssh_configsẽ sử dụng sudo và subshell để mở tệp đó với quyền root. Khi sudo được sử dụng lần đầu tiên, nó sẽ nhắc nhập mật khẩu, nhưng cho đến khi phiên đó đóng lại, bạn có thể chỉnh sửa bất kỳ tệp nào có các quyền đó bằng cách thêm tiền tố vào /sudo::lệnh hiện có .

Xem http://www.gnu.org/software/tramp/ để biết thêm chi tiết.


3

Nếu bạn sử dụng ivygói và đã được cấu hình counsel-find-fileđể thay thế find-file, thì một trong những "hành động ivy" được cấu hình sẵn cho bạn là chỉnh sửa tệp dưới dạng root. Tổ hydrahợp phím mặc định cho hành động đó là r.


2

Ngày nay có nhiều gói giải quyết vấn đề này (tính đến năm 2018). Một số trong số họ là:

  • sudo-edit, cho phép chuyển đổi quyền chỉnh sửa trên một tệp chỉ đọc đã mở. Chỉ cần M-x sudovà nhập một mật khẩu và bạn đã hoàn tất. Sau nhiều năm sử dụng cái này, tôi nghĩ nó thuận tiện hơn cho nhu cầu này. sudo-editcho phép bạn mở một tệp như bất kỳ người dùng nào, nhưng nó mặc định trên sudo nếu không được cung cấp.
  • dired-toggle-sudo. Đó là giải pháp đóng gói đầu tiên tôi tìm thấy sau khi đặt câu hỏi này. Nó được định hướng theo định hướng, vì vậy nếu bạn thích phiên bản hướng tệp , hãy xem dấu đầu tiên của danh sách này.
  • Các giải pháp khác tồn tại trên Melpa

2

Nếu bạn sử dụng Helm. Bạn không cần bất kỳ gói bên ngoài / cấu hình bổ sung. nó hoạt động ra khỏi hộp

Bên trong helm-find-filesbạn có thể gọi find file as rootmà ràng buộc C-c r. Điều này làm việc cho các tập tin hoặc thư mục trong helm-find-filesphiên.

Nếu bạn không muốn nhập mật khẩu mỗi khi bạn mở tệp / thư mục gốc. Đặt dòng sau cho bạn~/.authinfo.gpg

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

nguồn

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.