Tại sao sudoedit viết vào một thư mục tạm thời?


10

Tôi đã sử dụng sudoeditđể tạo một tập tin:

 $ sudoedit /etc/systemd/system/apache2.service

nhưng khi tôi đi lưu tập tin, nó đã ghi nó vào một thư mục tạm thời (/ var / temp / blahblah). Chuyện gì đang xảy ra vậy? Tại sao nó không lưu nó vào thư mục hệ thống?

Câu trả lời:


22

Mục đích của việc sudoeditlà cho phép người dùng chỉnh sửa các tệp mà họ sẽ không được phép, trong khi chạy trình chỉnh sửa không có đặc quyền. Để thực hiện điều này, sudoeditsao chép tệp sẽ được chỉnh sửa vào một vị trí tạm thời, làm cho nó có thể ghi được bởi người dùng yêu cầu và mở nó trong trình chỉnh sửa được cấu hình. Đó là lý do tại sao trình soạn thảo hiển thị một tên tệp không liên quan trong một thư mục tạm thời. Khi trình chỉnh sửa thoát, sudoeditkiểm tra xem có bất kỳ thay đổi nào thực sự được thực hiện hay không và sao chép tệp tạm thời đã thay đổi trở lại vị trí ban đầu nếu cần.


IIRC một số biên tập viên cũng sẽ thực hiện kiểm tra vệ sinh cơ bản để đảm bảo rằng không có thay đổi cục gạch nào được thực hiện, nhưng tôi không chắc mức độ phổ biến của nó ,.
Vụ kiện của Quỹ Monica

1
@NicHartley: Thật khó để làm điều đó trong trường hợp chung, bởi vì có rất nhiều cách khác nhau để gạch máy tính của bạn. Nó có xu hướng được ứng dụng cụ thể, ví dụ như với visudocho /etc/sudoers.
Kevin

@Kevin Oh, rất tiếc, tôi nghĩ rằng tôi bối rối visudocho sudoedit. Tôi biết visudochắc chắn đã làm điều đó. Cám ơn giải thích rõ ràng!
Vụ kiện của Quỹ Monica

1

Này được giải thích độc đáo trong các sudomanpage . Mô tả của -e( sudoedittương đương với) cho biết:

-e

Các -e(chỉnh sửa) tùy chọn chỉ ra rằng, thay vì chạy một lệnh, người dùng muốn chỉnh sửa một hoặc nhiều tệp hơn. Thay cho lệnh, chuỗi " sudoedit" được sử dụng khi tham khảo chính sách bảo mật. Nếu người dùng được ủy quyền bởi chính sách, các bước sau sẽ được thực hiện:

  1. Các bản sao tạm thời được tạo từ các tệp sẽ được chỉnh sửa với chủ sở hữu được đặt thành người dùng gọi.
  2. Trình chỉnh sửa được chỉ định bởi chính sách được chạy để chỉnh sửa các tệp tạm thời. Các sudoerschính sách sử dụng SUDO_EDITOR, VISUALEDITORcác biến môi trường (theo thứ tự đó). Nếu không có SUDO_EDITOR, VISUALhoặc EDITORđược thiết lập, chương trình đầu tiên được liệt kê trong trình soạn thảo sudoers(5)tùy chọn được sử dụng.
  3. Nếu chúng đã được sửa đổi, các tệp tạm thời được sao chép trở lại vị trí ban đầu của chúng và các phiên bản tạm thời sẽ bị xóa.

Nếu tệp được chỉ định không tồn tại, nó sẽ được tạo. Lưu ý rằng không giống như hầu hết các lệnh được chạy bởi sudo, trình soạn thảo được chạy với môi trường người dùng đang gọi không được sửa đổi. Nếu, vì một số lý do, sudokhông thể cập nhật một tệp với phiên bản đã chỉnh sửa, người dùng sẽ nhận được cảnh báo và bản sao đã chỉnh sửa sẽ vẫn ở trong một tệp tạm thời.

Cụ thể, lưu ý bước thứ ba: chỉ khi tệp đã được sửa đổi khi kết thúc chỉnh sửa thì bản gốc đã được thay đổi. Vì vậy, nếu bạn có một chương trình xem tệp, điều này có thể giúp tránh (a) ghi trung gian được chọn và (b) các hành động không cần thiết nếu bạn quyết định không thực hiện thay đổi nào.

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.